Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架方法组包含不起作用_C#_Entity Framework_Linq_Eager Loading_Method Group - Fatal编程技术网

C# 实体框架方法组包含不起作用

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).

我在EF中使用方法组加载相关实体时遇到一些问题

在简单查询中,加载相关实体
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包含

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);