gpt4 book ai didi

linq - Entity Framework linq 查询 Include() 多个子实体

转载 作者:行者123 更新时间:2023-12-03 04:17:26 25 4
gpt4 key购买 nike

这可能是一个非常基本的问题,但是在编写跨越三个级别(或更多级别)的查询时,包含多个子实体的好方法是什么?

即我有 4 个表:CompanyEmployeeEmployee_CarEmployee_Country

公司与员工存在 1:m 关系。

Employee 与 Employee_Car 和 Employee_Country 都具有 1:m 关系。

如果我想编写一个返回所有 4 个表中的数据的查询,我当前正在编写:

Company company = context.Companies
.Include("Employee.Employee_Car")
.Include("Employee.Employee_Country")
.FirstOrDefault(c => c.Id == companyID);

必须有一种更优雅的方式!这是冗长的并且生成可怕的 SQL

我在 VS 2010 中使用 EF4

最佳答案

使用extension methods 。将 NameOfContext 替换为对象上下文的名称。

public static class Extensions{
public static IQueryable<Company> CompleteCompanies(this NameOfContext context){
return context.Companies
.Include("Employee.Employee_Car")
.Include("Employee.Employee_Country") ;
}

public static Company CompanyById(this NameOfContext context, int companyID){
return context.Companies
.Include("Employee.Employee_Car")
.Include("Employee.Employee_Country")
.FirstOrDefault(c => c.Id == companyID) ;
}

}

然后你的代码就变成了

     Company company = 
context.CompleteCompanies().FirstOrDefault(c => c.Id == companyID);

//or if you want even more
Company company =
context.CompanyById(companyID);

关于linq - Entity Framework linq 查询 Include() 多个子实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3356541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com