我正在使用實體框架4.3,我試圖創建一個新實體時通過設置導航屬性引用現有實體,但是當我打電話保存EF抱怨說,在我設置導航屬性的表中存在PK違規行爲(即,它正在創建新記錄而不是參考!)。當添加插入新實體並設置對其他實體的引用時PK違反(的其他實體)
如何附加到現有的POCO而不是引用它並讓EF試圖創建新的數據庫記錄(但不是簡單地使用ID,理想情況下我想引用來自另一個查詢的實際實體) ?
由於提前,
克里斯
public class BusinessUnit
{
public int BusinessUnitID { get; set; }
public ExternalPlugin AccountsDataSourceModule { get; set; }
public ExternalPlugin OptionalContactsDataSourceModule { get; set; }
}
public BusinessUnit NewBusinessUnit(string name, ExternalPlugin accountsModuleId = null, ExternalPlugin contactsModuleId = null)
{
IUnitOfWork unitOfWork = UnitOfWorkFactory.CreateUnitOfWork();
BusinessUnit unit = new BusinessUnit();
unit.CompanyName = name;
unit .AccountsDataSourceModule = accountsModuleId; // this causes a problem
unit .OptionalContactsDataSourceModule = contactsModuleId; // as does this
unitOfWork.BusinessUnitRepository.Insert(unit);
unitOfWork.Save();
return unit;
}
嗨Slauma,我與上面運行,完全適用的一個位代碼,在另一個我撤回實體並設置爲成員,然後得到以下錯誤: 「一個實體對象不能被多個IEntityChangeTracker實例引用。 代碼看起來是一樣的,但顯然做了不同的事情是什麼導致這個和任何想法我怎麼能解決它?謝謝。 – g18c
@ g18c:查看我的編輯。如果這不能消除錯誤,則需要提供有關發生錯誤的更多詳細信息。最好問一個新問題,然後因爲問題與你原來的問題無關。 – Slauma