如何在实体框架中手动添加复合关联?

Pit*_*DBA 7 sql entity-framework .net-3.5 visual-studio-2008

这似乎是一种常见的情况,但无论出于何种原因,我都被EF的弱编辑所困扰.

我有两张桌子,如下:

Table1
(
Column1 int, PK
Column2 int, PK
)

Table2
(
Column1 int, PK, FK
Column2 int, PK, FK
Column3 int, PK
)
Run Code Online (Sandbox Code Playgroud)

现在,数据库(我们无法控制)没有外键约束.在此示例中,Table2应该具有引用Table1 on(Column1,Column2)的外键约束.换句话说,Table2的前两列引用Table1中的主键.这是任何普通数据库中的日常问题.

在其他框架中,例如LLBLGenPro,我们可以以非常简单的方式手动添加关系.但是,我们无法弄清楚如何在EF编辑器中实现这一点.此"映射详细信息"窗口非常糟糕且不直观.到目前为止,我们已经设法在映射中选择了各种表,但似乎总是想要关联所有列.

任何想法或参考?

Dav*_*ing 7

假设你有两个实体.

  1. 右键单击Table1实体标头,然后选择添加关联.
  2. 从右侧选择Table2.(在此向导中设置任何其他属性)
  3. 选择新创建的关联并编辑映射.(应该已经选中)
  4. 在Mapping Details窗口中,选择Table2

那应该是它.


Cra*_*ntz 1

  1. 创建具有相同列但具有适当 FK 的“临时”表。如果无法更改“真实”数据库,请使用数据库的备份。无需费心映射没有 FK 的表。如果您使用新模型,这可能是最简单的,因为在设计器中删除不会删除商店映射。
  2. 使用向导映射它们。
  3. 以 XML 形式打开 EDMX(不在设计器中)
  4. 使用您真正想要映射的表搜索并替换表名称。
  5. 删除“临时”表。

一般建议:在执行非标准操作时手动编辑 EDMX。没有 FK = 非标准。GUI 设计器仅处理某些情况。