我正在使用Linq来应用Table per Type方法的实体。到目前为止,这一直进展顺利。我有以下设置:
这是数据库图表
按照上面的视频,我将Table Per Type方法应用于Linq to entities在将上述表添加到模型时创建的默认模式。
在按类型应用表格之前:
每种类型的表格后:
然后我编译了项目并得到了您在上图中可以看到的错误。为了解决这个问题,我去了外键链接的映射,我添加了childid字段,错误信息正在呻吟。
然后我重新编译并得到另一个错误:
映射片段开始出现问题 在第147,176行:两个实体 不同的键映射到相同的 行。确保这两个映射 片段不映射两组 具有重叠键的实体 同一组行。
这就是我现在的观点。问题似乎是“LinkingTable”上的“ChildID”是Nullable。如果我将其设置为不可空,我不会得到上述错误。
我已将上述步骤中使用的数据库和项目保存到sky drive。
有谁知道如何修复此错误?
戴夫
这是固定代码(感谢The Gecko)
在
<AssociationSetMapping Name="FK_LinkingTable_Child"
TypeName="TablePerTypeModel.FK_LinkingTable_Child"
StoreEntitySet="LinkingTable">
<EndProperty Name="Child">
<ScalarProperty Name="Id" ColumnName="ChildID" />
</EndProperty>
<EndProperty Name="LinkingTable">
<ScalarProperty Name="LinkTableID" ColumnName="LinkTableID" />
</EndProperty>
</AssociationSetMapping>
在
<AssociationSetMapping Name="FK_LinkingTable_Child"
TypeName="TablePerTypeModel.FK_LinkingTable_Child"
StoreEntitySet="LinkingTable">
<EndProperty Name="Child">
<ScalarProperty Name="Id" ColumnName="ChildID" />
</EndProperty>
<EndProperty Name="LinkingTable">
<ScalarProperty Name="LinkTableID" ColumnName="LinkTableID" />
</EndProperty>
<Condition ColumnName="ChildID" IsNull="false"/>
</AssociationSetMapping>
答案 0 :(得分:5)
尝试更新EDMX文件的Mapping部分中的AssociationMapping节点,以包含允许空值的条件。
e.g。
<AssociationSetMapping>
...
<Condition ColumnName="" IsNull="false"/>
</AssociationSetMapping>