如果数据库没有链接表,如何在Entity Framework中创建多对多关系?

时间:2012-06-06 09:45:36

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

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

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

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

  • 表1 用户只有一个ID列 userId ,另一列名为 userProfile
  • 表2 SecurityProfile 有一个id列 securityProfileId ,还有 userProfile

换句话说,用户个人资料只是用户到SecurityProfiles的映射名称。

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

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

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

更新

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

即。我会将用户 SecurityProfile 实体抽象化,并使用指向我手动创建的UserProfile实体的相应属性手动定义这些实体的扩展名

1 个答案:

答案 0 :(得分:3)

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