1

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

例子 :

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

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

  • 表角色:RoleId(PK);角色名

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

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

4

1 回答 1

1

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

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

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

于 2012-03-19T11:59:46.773 回答