【问题标题】:How do you create a many-to-many relationship in Entity Framework if the database doesn't have a linking table?如果数据库没有链接表,如何在 Entity Framework 中创建多对多关系?
【发布时间】:2012-06-06 18:54:54
【问题描述】:

我正在使用 VS 2010 实体框架设计器来修改一些从数据库自动生成的实体。

数据库结构由我正在为其构建 UI 的产品定义,因此我无法对其进行修改。

数据库中的表具有多对多关系,完全基于两个表的非键列中的共同值。

  • 表 1 Users 有一个 id 列 userId 和另一列称为 userProfile强>。
  • 表 2 SecurityProfile 有一个 id 列 securityProfileId 并且还有一个列 userProfile强>。

换句话说,用户配置文件只是用户到 SecurityProfiles 的映射的名称。

向导为 Users 和 SecurityProfile 表创建了实体。我创建了一个名为 UserProfile 的新实体,其中包含一个关键字段:userProfile

我创建了从 UserProfile 到 User 以及从 UserProfile 到 SecurityProfile 的一对多关联。这一切都很好,只是 UserProfile 实体没有表映射,所以它不会编译。

如何在 Entity Framework 中创建此关联?

更新:

如果无法使用 EF(如第一个答案所建议的那样),是否可以手动创建一个非绑定实体,我可以使用它来链接这两个实体,以便我公开一个至少为更容易导航吗?

即我会将 UserSecurityProfile 实体抽象化并手动定义这些实体的扩展,并使用指向我手动创建的 UserProfile 实体的适当属性

【问题讨论】:

    标签: c# entity-framework data-binding many-to-many


    【解决方案1】:

    你不会的。 EF 无法处理数据库中不存在的多对多关联。 EF 要求与数据库相同的引用完整性——在这种情况下,它要求连接表存在并映射到图中使用的关联。

    【讨论】:

      猜你喜欢
      • 2018-09-10
      • 1970-01-01
      • 2016-10-05
      • 1970-01-01
      • 2019-06-18
      • 1970-01-01
      • 2021-07-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多