我是.net和ef的新手,我正在开发一个需要动态查询实体的应用程序。
我有一个数据库,有三个表:

**Employee**      **EmployeeSkills**      **Skill**
Employee_ID       Id                      Skill_ID
Name              Employee_ID             Name
Address           Skill_ID                etc.
etc.              Level

我将从我的客户端发送用于选择的属性名称和用于筛选的属性值对词典,例如{“name”,“skill”,[{“skill id=”1“},{“level=2”}}将返回所有与id 1相关联的技能和level 2相关联的技能的员工。
我真的需要设计我的实体,使查询尽可能简单,这意味着没有连接或复杂的SQL。我已经成功地实现了选择和筛选属性的所有功能,但是我仍然在处理多对多的关系。
我知道,如果我的中间表只有employee\u id和skill\u id字段,那么我可以使用employee.skills引用这些技能。是否可以使用当前的表结构对此进行引用?
我希望有某种映射,比如在employee实体上定义某种导航属性,该属性存储获取雇员的所有技能及其级别所需的查询。
P.S.I正在使用VS2012,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方法中更新,在您的情况下无法配置导航属性。
This is link where yu can read what you can do in your situation.

关于c# - 与.NET 4.0多对多关联的 Entity Framework ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13622033/

10-10 09:51