c# - 从 EF Core 中的父对象访问子对象
问题描述
我已经搜索了整个网络,但我仍然无法让它工作。
我需要的是一个看起来像这样的简单列表:
- 家长姓名1
- 子名1
- 子名2
- 父母姓名2
- 子名3
我有一个父对象表和一个子对象。在 Child 对象表中,有一个外键 ParentId。
现在,我使用强类型 ViewModel 和 Intellisense 甚至通过 Parent.Child.Property 建议子属性,但是当我运行程序时,我得到一个“NullReferenceException:对象引用未设置为对象的实例。”。
我的父类如下所示:
public class EmployeeArea
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public int? StudioCode { get; set; }
public string AreaName { get; set; }
public List<EmployeeName> EmployeeNames { get; set; }
}
}
我的 Child 类看起来像这样:
public class EmployeeName
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public string Name { get; set; }
public int AreaId { get; set; }
}
}
我需要在 DbContext ModelBuilder 中做些什么吗?我欢迎任何帮助。谢谢!
解决方案
好吧,我看不到您的查询,但我建议以下内容。首先,外键应该是:
public int EmployeeAreaId {get; set;}
那么你有两个选项可以从数据库中获取数据。如果您使用的是 EF,则:
db.EmployeeArea.Include(e => e.EmployeeName).ToList();
这将返回一个包含子列表的employeeArea 列表。
使用 Linq 就像:
var employeeArea = (from e in db.EmployeeArea
select new EmployeeArea
{
Id = e.Id
// continue populating the model properties
EmployeeNames = db.EmployeeName.Where(e =>
e.EmployeeAreaId == e.Id).ToList(),
}).ToList()
请原谅这里的任何错字。希望能帮助到你。
确保在遍历父母时检查他们的孩子列表是否为null。
推荐阅读
- build - 我使用 Tailwind 制作的 CSS 不适用于使用 gridsome 构建 netlify
- vba - 根据值将数据从一个工作簿复制到另一个工作簿
- node.js - CasperJS 已被重定向,然后以 status=fail (HTTP 302) 退出
- java - 如何将我的应用程序从 android studio 与 amadeus api 连接
- scala - 为什么最多 4 个元素的集合是有序的,而更大的则不是?
- apache-spark - 版本 > 2.1.1 的 Spark 流比 2.1.1 慢
- javascript - 反应本机错误'无法解析模块......'
- mongodb - $lookup 后如何使用 $geoNear
- git - 在 git checkout 之后,我看到另一个分支的文件夹
- javascript - 为“bootstrap-datepicker”导入语言环境