gpt4 book ai didi

Linq 到实体、每种类型的表和可空外键关系

转载 作者:行者123 更新时间:2023-12-04 12:26:08 27 4
gpt4 key购买 nike

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

  • 父表
  • 子表(继承
    来自 parent )
  • 大 child table
    (从子表继承)
  • 链接表(外键可以为空,到子表)

  • 这是数据库图

    alt text

    在上述视频之后,我将 Table Per Type 方法应用于 Linq to entity 创建的默认架构,当您将上述表格添加到模型时。

    在应用每种类型的表之前:

    alt text

    每种类型的后表:

    alt text

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

    alt text

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

    Problem in Mapping Fragments starting at lines 147, 176: Two entities with different keys are mapped to the same row. Ensure these two mapping fragments do not map two groups of entities with overlapping keys to the same group of rows.



    这就是我现在的重点。问题似乎是“LinkingTable”上的“ChildID”为空。如果我将其设置为不可为空,则不会出现上述错误。

    我已将上述步骤中使用的数据库和项目保存到 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>

    最佳答案

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

    例如

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

    关于Linq 到实体、每种类型的表和可空外键关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/336886/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com