实体框架:具有自己主键的联结表

时间:2012-03-19 11:06:34

标签: entity-framework database-first

我正在开发一个ASP NET MVC项目。我们使用Entity Framework并遵循Database First方法。数据库已存在。 数据库是使用约定创建的,即每个表都有一个指定的单个主键,即使它是一个联结表。

示例:

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

  • 表UserRole: UserRoleId(PK); UserId(FK); RoleId(FK)

  • 表格角色: RoleId(PK); Rolename

如上所述,数据库已经存在,这个约定是不可讨论的。 当我想在Visual Studio中创建实体数据模型时,我还有三个实体。但只有两个实体才有意义:用户和角色。 UserRole实体毫无意义。

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

1 个答案:

答案 0 :(得分:1)

  

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

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

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