【发布时间】:2018-02-08 15:52:00
【问题描述】:
我继承了一个数据库,我需要使用 EF6 插入数据。我得到了错误:
DbUpdateException: Unable to determine the principal end of the 'POSModel.FK_KitMemberTaxRaw_KitMemberSaleReturnRaw_KitMemberSaleReturnRowId' relationship. Multiple added entities may have the same primary key.
我使用 DataContractSerializer 将 XML 反序列化为 POCO 对象。 我正在使用 xml 文档结构中的对象引用来定义关系。 POCO 对象是使用 NuGet 包中提供的 t4 脚本生成的(这两种反序列化器都不能很好地工作!)
我已经像这样装饰了 KitMemberTaxRaw:
[ForeignKey("KitMemberSaleReturnRaw")]
public virtual KitMemberSaleReturnRaw KitMemberSaleReturnRaw { get; set; }
[ForeignKey("KitMemberKitMemberSaleReturnRaw")]
public virtual KitMemberKitMemberSaleReturnRaw KitMemberKitMemberSaleReturnRaw { get; set; }
KitMemberTaxRaw 表可以连接到 KitMemberKitMemberSaleReturnRaw 或 KitMemberSaleReturnRaw 表(但不能同时连接)。
EF 如何确定“关系的主体”?
【问题讨论】:
-
那些属性是错误的。您将它们指向要使用的 FK id。您将无法对 2 个关系使用相同的密钥,因此您可能需要查看 TPH
-
将外键装饰移动到 id 属性而不是集合。同样的错误。它不是对两个关系使用相同的键。税表连接到两个表中的一个或另一个。组合的许多部分是独立征税(或不征税)。该表用于层次结构的多个级别
标签: c# entity-framework entity-framework-6