Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.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#_Asp.net Mvc_Linq_Entity Framework 6 - Fatal编程技术网

C# 实体框架中实体的多个引用

C# 实体框架中实体的多个引用,c#,asp.net-mvc,linq,entity-framework-6,C#,Asp.net Mvc,Linq,Entity Framework 6,这是我的模型附件 现在你们可以看到,员工可以拥有很多技能,然后员工技能可以包含技能和技能等级 我想写一个查询,在其中我想访问所有表中的所有相关数据 下面是我的疑问 _context.Employees.include(e=>e.EmployeesSkills.select(s=>s.Skill)); 此查询将仅包括employee=>EmployeesSkills==>Skill如何在同一查询中包括SkillLevel以访问所有相关表中的数据。采用表达式的include扩展方

这是我的模型附件

现在你们可以看到,员工可以拥有很多技能,然后员工技能可以包含技能和技能等级

我想写一个查询,在其中我想访问所有表中的所有相关数据

下面是我的疑问

 _context.Employees.include(e=>e.EmployeesSkills.select(s=>s.Skill)); 

此查询将仅包括employee=>EmployeesSkills==>Skill如何在同一查询中包括SkillLevel以访问所有相关表中的数据。

采用
表达式的
include
扩展方法重载只能理解仅使用属性访问和
选择方法。要包含具有更复杂关系的实体,需要使用重载,该重载接受字符串。在您的情况下,它将如下所示:

 _context.Employees.Include("EmployeesSkills.Skill").Include("EmployeesSkills.SkillLevel"); 
编辑:

实际上,对于强类型版本的
Include
,您想要做的事情看起来并不太复杂。这应该起作用:

_context.Employees.Include(e => e.EmployeesSkills.Select(s => s.Skill))
                  .Include(e => e.EmployeesSkills.Select(s => s.SkillLevel));

所以,如果你有任何解决方案,我该怎么做?请与我分享。因为他想要两种类型,我认为应该是
\u context.Employees.Include(“EmployeesSkills.Skill”)。Include(“EmployeesSkills.SkillLevel”)(或导航属性的名称)@ScottChamberlain,是的,错过了。答案已更新。@SteveRuble
Include
还了解导航嵌套集合的
SelectMany
扩展方法。@ScottChamberlain,你说得对。我只是假设
SkillLevel
没有
Skill
,否则为什么不把
Include
链接起来呢?我猜这是个错误的假设。@SimonBelanger,他们在EF6.0中添加了这个吗?我刚刚在EF5.0中试过,它给了我一个错误。