C# 在EDMX(EF 4.3)中使用m:n表,而不将其与相关表关联
我有一个设计糟糕的数据库,其中TableA通过m:n映射表映射到表B、C、D 当我在EDMX中包含映射表时,我得到一个运行时错误,即entite的键列与表的键列不匹配。错误3002: 我发现没有办法避免这种情况,即使在删除EDMX模型中的额外列时也是如此。当我这样做的时候,我得到了关于多重性必须为1的其他错误 事实上,数据库不能也不得更改。 那么,有没有一种方法可以在没有关联的情况下在EDMX中显示m:n映射表?C# 在EDMX(EF 4.3)中使用m:n表,而不将其与相关表关联,c#,.net,linq,entity-framework,edmx,C#,.net,Linq,Entity Framework,Edmx,我有一个设计糟糕的数据库,其中TableA通过m:n映射表映射到表B、C、D 当我在EDMX中包含映射表时,我得到一个运行时错误,即entite的键列与表的键列不匹配。错误3002: 我发现没有办法避免这种情况,即使在删除EDMX模型中的额外列时也是如此。当我这样做的时候,我得到了关于多重性必须为1的其他错误 事实上,数据库不能也不得更改。 那么,有没有一种方法可以在没有关联的情况下在EDMX中显示m:n映射表? 我这样问是因为映射表不是作为一个表而“可见”的,而是作为一个关联(在设计器中,其他
我这样问是因为映射表不是作为一个表而“可见”的,而是作为一个关联(在设计器中,其他两个表之间有一条线。虽然可能有更好的方法,但Gert所说的是我推荐的:
- 复制数据库(至少是架构)
- 将列添加到映射表中
- 基于该版本更新edmx(额外的列将意味着该表将作为“真实”包含)
- 从edmx中删除额外的列
- 更新模型以仅包括映射表(确保它首先不包括其他两个表,至少不包括这两个表)
- 这将使其成为模型中的“真实表格”
- 更新模型以包含其他表
您始终可以手动创建/映射,但希望上述操作之一比手动创建/映射更快/更容易。是的,EF只将纯联接表映射到关联中是明智的。在您的情况下,您可以从只有映射表的edmx开始,根据需要修改它,然后添加其他表。