在EDMX(EF 4.3)中使用m:n表,而不将其与相关表关联

时间:2012-03-12 11:53:50

标签: c# .net linq entity-framework edmx

我有一个设计糟糕的数据库,其中TableA通过m:n映射表映射到表B,C,D。

当我在EDMX中添加地图表时,我得到一个运行时错误,即entite的键列与表的键列不匹配。错误3002:........

即使取出EDMX模型中的额外列,我也没有办法避免这种情况。当我这样做时,我得到关于多重性的其他错误必须是1。

事实上,DB不能也不能改变。

那么,有没有办法在没有关联的情况下在EDMX中显示m:n映射表? 我问,因为映射表不是作为表“可见”而是作为关联(在设计器中有两个其他表之间的行。

1 个答案:

答案 0 :(得分:1)

虽然可能有更好的方法,但Gert所说的是我的建议:

  • 制作数据库的副本(至少是架构)
  • 在映射表中添加一列
  • 根据该版本更新edmx(额外列将表示该表将包含为'real'
  • 从edmx
  • 删除额外列

可能有效的另一种选择(之前没有尝试过)

  • 更新模型以仅包含映射表(确保它首先不包括其他2个表,至少不包括它们两个)
  • 这应该使它成为模型中的“真实表格”
  • 更新模型以包含其他表格

您可以随时手动创建/映射,但希望上述之一比这样做更快/更容易。 :)