2012-03-19 55 views
1

Ì目前正在开发ASP NET MVC项目。我们使用实体框架并遵循数据库优先的方法。数据库已经存在。 使用约定创建了数据库,即使它是结点表,每个表都具有指定的单个主键。实体框架:具有自己主键的联结表

实施例:

  • 表用户: 用户ID(PK); 用户名

  • 表UserRole: UserRoleId(PK); UserId(FK); 角色ID(FK)

  • 表作用: 角色ID(PK); ROLENAME

至于说,该数据库已存在,这一惯例在分析讨论。 当我想在Visual Studio中创建一个实体数据模型时,我也有三个实体。但只有两个实体:用户和角色才有意义。 UserRole实体没有意义。

是否有任何可能影响实体框架映射表的方式,所以我可以摆脱这些关系(无用的)实体?

回答

0

有没有我可以影响该实体框架 映射我的表的方式的可能性,这样我就可以摆脱那些关系(没用) 实体?

不,你不能强迫EF设计师这样做。当使用自动工具时,您总是会将结点表映射为单独的实体,因为它不再被视为结点表 - 它具有特殊的数据(一个单独的键),它为该实体提供了新的可能性(例如两个实体之间的关系可以存在多次,这对于正常结点表是不可能的)。

避免这种情况的唯一方法是放弃工具支持,并使用代码映射或手动编写EDMX文件,并且不要告知EF有关该附加密钥。相反,让EF相信只有那些两个FK形成了复合PK,正如预期的联结表一样。显然,如果你的数据库需要单独的PK允许的特殊可能性,你不能这样做。

+0

这不是我希望的答案,但无论如何要感谢。我想我会试着讨论这个无可辩驳的惯例;) – ckonig 2012-03-19 13:11:28