[英]EF6: Multiple added entities may have the same primary key
我繼承了一個數據庫,需要使用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如何確定“關系的主要目的”?
事實證明,此問題是由於EF6無法自動理解包含指向父級和可選的父級父級的鏈接的表。 Microsoft提供的模板生成的導航屬性正確但不足。
為了解決該問題,我為它不了解的關系手動創建了臨時主鍵。
注意:我使用的DataContractSerializer類創建了POCO對象,為實例化的導航屬性創建了一個數組。 我必須更改模板以生成IList <>屬性而不是ICollection <>。 在運行時出現錯誤,因為無法動態調整數組大小。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.