如果数据库没有链接表,如何在实体框架中创建多对多关系

本文关键字:框架 实体 创建 关系 数据库 链接表 如果 | 更新日期: 2023-09-27 18:36:20

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

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

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

  • 表 1 用户具有单个 id 列 userId 和另一个名为 userProfile 的列。
  • 表 2 SecurityProfile 具有单个 id 列 securityProfileId,并且还具有 userProfile 列。

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

该向导为"用户"表和"安全性配置文件"表创建了实体。我创建了一个名为 UserProfile 的新实体,其中包含一个键字段:userProfile

我创建了从用户配置文件

到用户以及从用户配置文件到安全配置文件的一对多关联。这一切都工作正常,除了用户配置文件实体没有表映射,所以它不会编译。

如何在实体框架中创建此关联?

更新:

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

即,我会使用户和安全配置文件实体抽象并手动定义这些实体的扩展,这些扩展具有指向我手动创建的UserProfile实体的适当属性

如果数据库没有链接表,如何在实体框架中创建多对多关系

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