繁体   English   中英

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

[英]How do you create a many-to-many relationship in Entity Framework if the database doesn't have a linking table?

我正在使用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(如第一个答案所建议的那样),是否可以手动创建一个非绑定实体,我可以用它来链接这两个实体,这样我就可以暴露一个至少更容易一点的对象模型导航?

即我将使UserSecurityProfile实体抽象并手动定义这些实体的扩展,并指向我手动创建的UserProfile实体的相应属性

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM