答案 0 :(得分:1)
检查那里的答案,可能是你的模型中不应该存在的一些额外的东西。你可以发布edmx文件吗?
答案 1 :(得分:1)
我刚刚遇到这种情况。
问题结果是与终端密钥的关联,它不是该实体主键的全部内容!
例如,在我的.edmx深处,我有这种关联:
<AssociationSetMapping Name="Table1Table2" TypeName="MyModel.Table1Table2" StoreEntitySet="Table2">
<EndProperty Name="Table1">
<ScalarProperty Name="Table1Key" ColumnName="Table1Key" /></EndProperty>
<EndProperty Name="Table2">
<ScalarProperty Name="Table2Key" ColumnName="Table2Key" />
<ScalarProperty Name="Table2OtherColumn" ColumnName="Table2OtherColumn" />
</EndProperty></AssociationSetMapping>
,Table2的定义如下:
<EntityType Name="Table2">
<Key>
<PropertyRef Name="Table2Key" />
</Key>
<Property Name="Table2Key" Type="int" Nullable="false" />
<Property Name="Table2OtherColumn" Type="int" Nullable="false" />
...other properties...
</EntityType>
请注意,Table2OtherColumn
位于EndProperty中,但不属于实际密钥。从EndProperty中删除它解决了问题。
请注意,实体框架4 (Visual Studio 2010)可以在编译时检测到此问题。因此,如果您在跟踪导致此问题的表/属性时遇到严重问题,只需将项目加载到VS 2010 Express中(在备份之后!)并尝试编译。