使用实体框架加载嵌套实体/集合
我正在尝试在一次调用中立即加载所有相关实体或实体集合。 我的实体看起来像:
Class Person
{
public virtual long Id { get; set; }
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
}
Class Employee
{
public virtual long Id { get; set; }
public DateTime AppointmentDate { get; set; }
public virtual ICollection<EmployeeTitle> Titles { get; set; }
public virtual Person Person { get; set; }
}
Class EmployeeTitle
{
public virtual long Id { get; set; }
public virtual bool IsCurrent { get; set; }
public virtual Title Title { get; set; }
}
Class Title
{
public virtual long Id { get; set; }
public virtual string Code { get; set; }
public virtual string Description { get; set; }
}
我想做的是,如果我调用一个方法来加载所有员工,结果应包括人员、员工头衔列表(包括标题中的代码和描述) 我已经能够到达第三级,即获取带有人员和 EmployeeTitle 列表的员工。我不知道如何使用 EmployeeTitle 获取职位信息。 我的代码是:
Context.Employees.Include("Person").Include(e => e.Titles).ToList();
请说明如何完成此操作。提前致谢。
I am trying to Eagerly load all the related entities or collection of Entity in one call.
My Entities Looks like:
Class Person
{
public virtual long Id { get; set; }
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
}
Class Employee
{
public virtual long Id { get; set; }
public DateTime AppointmentDate { get; set; }
public virtual ICollection<EmployeeTitle> Titles { get; set; }
public virtual Person Person { get; set; }
}
Class EmployeeTitle
{
public virtual long Id { get; set; }
public virtual bool IsCurrent { get; set; }
public virtual Title Title { get; set; }
}
Class Title
{
public virtual long Id { get; set; }
public virtual string Code { get; set; }
public virtual string Description { get; set; }
}
What Iam trying to do is if i call a method to load all Employees, the result should include Person, List of EmployeeTitles including the code and description from Title
I have been able to get to the third level i.e. getting the Employee with person and list of EmployeeTitle. I don't know how to get the title information with the EmployeeTitle.
My code to get this is:
Context.Employees.Include("Person").Include(e => e.Titles).ToList();
Please shed some light on how to accomplish this. Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以尝试以下操作:
Select
可以应用于集合并加载对象图中下一个级别的导航属性。You can try this:
Select
can be applied to a collection and loads navigation properties of the next level in the object graph.由于这是我在谷歌搜索中的第一页,所以我只想发布此内容。
斯劳玛的回答很好。但如果您不打算实际使用该列表,建议使用 Load() 而不是 ToList()。所以它会是:
Since this is the first page in my search in google, I just wanted to post this.
Slauma's answer is fine. But it's recommended to use Load() instead of ToList() if you don't plan to actually use the list. So it would be: