繁体   English   中英

实体框架与 .NET 4.0 多对多关联

[英]Entity Framework with .NET 4.0 many to many Association

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

**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 引用技能。有没有办法使用我当前的表结构来解决这个问题?

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

PS 我使用的是 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 方法中,您不能在您的情况下配置导航属性。 这是您可以阅读在您的情况下可以做什么的链接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM