C# 实体框架方法组包含不起作用
我在EF中使用方法组加载相关实体时遇到一些问题 在简单查询中,加载相关实体与C# 实体框架方法组包含不起作用,c#,entity-framework,linq,eager-loading,method-group,C#,Entity Framework,Linq,Eager Loading,Method Group,我在EF中使用方法组加载相关实体时遇到一些问题 在简单查询中,加载相关实体与Include配合正常 例如: var result = Repository.Query<TimeState>(x => x.Accepted == 0 && x.ProjectID != null && myTeam.Contains(x.EmployeeID)) .Include(typeof(Project).
Include
配合正常
例如:
var result =
Repository.Query<TimeState>(x => x.Accepted == 0 && x.ProjectID != null && myTeam.Contains(x.EmployeeID))
.Include(typeof(Project).Name)
.Include(typeof(Employee).Name)
.Include(typeof(EmployeeDetails).Name)
.OrderByDescending(x => x.SubmitedDate);
之后,result3[0]。Employee
有一个值,与result3[0]的值相同。Project
(或该集合中的任何其他项)。问题是我不需要员工和项目作为这个动态对象result3中的单独属性
如何在返回结果2的方法中包含员工和项目?:) 我很少使用查询语法,也从未遇到过使用.Include(typeof(..).Name)语法的人,因此请尝试以下方法:
var result2 = (from item in Repository.Query<TimeState>(x => x.Accepted == 0 && x.ProjectID != null)
let projectId = (int)item.ProjectID
let isA = projectsIds.Contains(projectId) && item.Employee.EmployeeDetails.SuperiorID == id
let isB = item.Project.ManagerID == id && employeesTeam.Contains(item.EmployeeID)
where isA || isB
orderby item.SubmitedDate descending
select item)
.Include(i=>i.Projects)
.Include(i=>i.Employees)
.Include(i=>i.EmployeeDetails);
var result2=(来自Repository.Query(x=>x.Accepted==0&&x.ProjectID!=null)中的项)
设projectId=(int)item.projectId
让isA=projectsIds.Contains(projectd)和&item.Employee.EmployeeDetails.SuperiorID==id
让isB=item.Project.ManagerID==id&&employeesTeam.Contains(item.EmployeeID)
其中isA | | isB
orderby item.SubmitedDate降序
选择项目)
.包括(i=>i.项目)
.包括(i=>i.员工)
。包括(i=>i.员工详情);
您可能需要使用System.Data.Entity包含
我很少使用查询语法,也从未遇到过使用.Include(typeof(..).Name)语法的人,所以请尝试以下方法:
var result2 = (from item in Repository.Query<TimeState>(x => x.Accepted == 0 && x.ProjectID != null)
let projectId = (int)item.ProjectID
let isA = projectsIds.Contains(projectId) && item.Employee.EmployeeDetails.SuperiorID == id
let isB = item.Project.ManagerID == id && employeesTeam.Contains(item.EmployeeID)
where isA || isB
orderby item.SubmitedDate descending
select item)
.Include(i=>i.Projects)
.Include(i=>i.Employees)
.Include(i=>i.EmployeeDetails);
var result2=(来自Repository.Query(x=>x.Accepted==0&&x.ProjectID!=null)中的项)
设projectId=(int)item.projectId
让isA=projectsIds.Contains(projectd)和&item.Employee.EmployeeDetails.SuperiorID==id
让isB=item.Project.ManagerID==id&&employeesTeam.Contains(item.EmployeeID)
其中isA | | isB
orderby item.SubmitedDate降序
选择项目)
.包括(i=>i.项目)
.包括(i=>i.员工)
。包括(i=>i.员工详情);
您可能需要使用System.Data.Entity包含代码>也可以使用。从result2
访问Project
或Employee
时会发生什么?顺便问一下,为什么要回滚marc_的编辑?我认为编辑提高了问题的可读性。@默认情况下,在result2
中,Employee
和Project
为空。@默认情况下,回答第二个问题:很遗憾,是一个将我的类型Employee
和Project
转换为简单单词的编辑。当你从result2
访问Project
或Employee
时会发生什么?顺便问一下,你为什么要回滚marc_的编辑?我认为编辑提高了我们问题的可读性。@默认情况下,在result2
中Employee
和Project
为空。@默认情况下,回答第二个问题:很遗憾,编辑将我的类型Employee
和Project
转换为简单的单词。谢谢推荐。:)它可以工作(我已经在*.cs
文件头中使用了的System.Data.Entity;
),顺便问一下,您喜欢哪种查询语法?(也许这对我来说也是一个更好的选择:)我通常使用method/lambda语法。谢谢推荐。:)它可以工作(我已经在*.cs
文件头中使用了的System.Data.Entity;
),顺便问一下,您喜欢哪种查询语法?(也许这对我来说也是一个更好的选择:)我通常使用method/lambda语法。
var result2 = (from item in Repository.Query<TimeState>(x => x.Accepted == 0 && x.ProjectID != null)
let projectId = (int)item.ProjectID
let isA = projectsIds.Contains(projectId) && item.Employee.EmployeeDetails.SuperiorID == id
let isB = item.Project.ManagerID == id && employeesTeam.Contains(item.EmployeeID)
where isA || isB
orderby item.SubmitedDate descending
select item)
.Include(i=>i.Projects)
.Include(i=>i.Employees)
.Include(i=>i.EmployeeDetails);