Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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# 具有.NET 4.0多对多关联的实体框架_C#_.net_Database_Entity Framework - Fatal编程技术网

C# 具有.NET 4.0多对多关联的实体框架

C# 具有.NET 4.0多对多关联的实体框架,c#,.net,database,entity-framework,C#,.net,Database,Entity Framework,我不熟悉.NET和EF,我正在开发一个需要动态查询实体的应用程序。 我有一个带有3个表的db: **Employee** **EmployeeSkills** **Skill** Employee_ID Id Skill_ID Name Employee_ID Name Address Skill_ID etc. etc.

我不熟悉.NET和EF,我正在开发一个需要动态查询实体的应用程序。 我有一个带有3个表的db:

**Employee**      **EmployeeSkills**      **Skill**
Employee_ID       Id                      Skill_ID
Name              Employee_ID             Name
Address           Skill_ID                etc.
etc.              Level
我将从我的客户端发送属性名称进行选择,并使用属性值对进行筛选的字典,例如{“name”、“skill”、[{“skillId=“1”}、{“level=2”}]}将返回所有拥有id为1的技能的员工,以及该技能在级别2的konoledge

我真的需要设计我的实体,使查询尽可能简单,这意味着没有连接或复杂的sql。我已经设法实现了选择和筛选属性的所有功能,但我仍在努力处理多对多关系

我知道,如果我的中间表只有Employee_ID和Skill_ID字段,那么我可以使用Employee.skills引用技能。有没有办法使用我当前的表结构来实现这一点

我希望有某种映射,比如在员工实体上定义某种导航属性,该属性存储获取员工所有技能所需的查询


另外,我正在使用VS 2012,EF运行时版本4.0.3,版本4.4.0

如果您使用codefirst方法,您可以配置与Fluent API的关系:

HasMany(e => e.Skills).WithMany(s=>s.Employees).Map(se =>
            {
                se.MapLeftKey("Skill_ID");
                se.MapRightKey("Employee_ID");
                se.ToTable("EmployeeSkills");
            });
更新在DB-First方法中,您无法在您的案例中配置导航属性。

您好,我们正在从现有数据库生成实体。遗憾的是,在db-first方法中,您不能做您想做的事情。在这个链接中,您可以阅读您在您的情况下可以做什么:在从数据库生成后,有没有办法进行这种映射?如果我可以生成我自己的“虚拟数据库”“对于一个实体来说,这将是完美的。虚拟财产指仅在实体中定义的、未保存在数据库中的财产。例如,生成返回技能名称和级别列表的虚拟财产技能。我担心这无法完成:(您应该使用导航属性EmployeeSkills来处理它,或者使用代码优先的方法进行数据库映射。(代码优先表示映射在代码中。可以对现有数据库进行映射).这就是我所需要的,如果可以对现有数据库进行映射的话,那么它是完美的。我应该在哪里进行映射?我不喜欢EF隐藏我的中间表,我更喜欢在可以看到实际情况的地方进行连接。