我得到的错误是“将具有不同键的两个实体映射到同一行

时间:2009-03-12 17:13:42

标签: entity-framework

见图片:

EF Designer

SQL Tables

“具有不同键的两个实体被映射到同一行。确保这两个映射片段不会将具有重叠键的两组实体映射到同一组行。”

事实上,这两个(或6个)实体中只有一个拥有单行的密钥。

我怎么能克服这个? SQL视图将它们全部组合到一行? ContactMethod中的计算鉴别器列?我应该如何设计不同的表以便与EF更好地协作?

或者我是否可以做一些XML编辑来保留我的架构,并告诉EF相信我,我从来没有在同一个缺少的类中放置相同的Id?

这是:edmx如果它有帮助。

2 个答案:

答案 0 :(得分:3)

指向edmx文件的链接不起作用。也许,你必须添加一个条件标签

<Condition ColumnName="ContactId" IsNull="false" />

使用xml-editor编辑你的edmx文件:

<AssociationSetMapping Name="FK_Contact_ContactMethod" TypeName="SomeNamespace.FK_Contact_ContactMethod" StoreEntitySet="ContactMethod">
  <EndProperty Name="ContactMethod">
    <ScalarProperty Name="ContactMethodId" ColumnName="ContactMethodId" />
  </EndProperty>
  <EndProperty Name="Contact">
    <ScalarProperty Name="ContactId" ColumnName="ContactId" />
  </EndProperty>
  <Condition ColumnName="ContactId" IsNull="false" />
</AssociationSetMapping>

答案 1 :(得分:0)

在数据库中取消外键到ContactMethod可以消除错误,但看起来不对。