Linq to Entities,Table per Type和Nullable Foreign Key Relationships

时间:2008-12-03 11:46:46

标签: linq entity-framework linq-to-entities table-per-type

我正在使用Linq来应用Table per Type方法的实体。到目前为止,这一直进展顺利。我有以下设置:

  • 父表
  • 子表(继承 来自父母)
  • 大孩子桌 (继承自子表)
  • 链接表(具有外键可空,到子表)

这是数据库图表

alt text

按照上面的视频,我将Table Per Type方法应用于Linq to entities在将上述表添加到模型时创建的默认模式。

在按类型应用表格之前:

alt text

每种类型的表格后:

alt text

然后我编译了项目并得到了您在上图中可以看到的错误。为了解决这个问题,我去了外键链接的映射,我添加了childid字段,错误信息正在呻吟。

alt text

然后我重新编译并得到另一个错误:

  

映射片段开始出现问题   在第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>

1 个答案:

答案 0 :(得分:5)

尝试更新EDMX文件的Mapping部分中的AssociationMapping节点,以包含允许空值的条件。

e.g。

<AssociationSetMapping>
  ...
  <Condition ColumnName="" IsNull="false"/>
</AssociationSetMapping>