簡體   English   中英

帶有Entity Framework 6的ObjectContext在現有相關實體上插入重復項

[英]ObjectContext with Entity Framework 6 inserting duplicates on existing related entities

我創建此程序的目的是希望節省一些人的時間,或者在我的情況下為星期六。

問題如下:

在這種情況下,我的主要實體稱為case,通過驗證后,我將保存到對象上下文中,如下所示

context.AddToCases(caseModel);
context.SaveChanges();

問題在於案件有相關事件。 我添加了一個名為event的上下文相關項,通過這樣的上下文進行查找

caseModel.Incident = context.Incidents.SingleOrDefault(i => i.IncidentNumber == jumpIncidentNumber);

當代碼運行時,我可以看到該模型。事件具有EntityKey並具有添加狀態,並且正在添加重復項。 不僅如此,保存后的結論引用是對新創建的記錄的引用。

我以為我立刻知道了答案,我只需要像這樣事先通過Attach運行事件模型即可

context.Attach(incident);
caseModel.Incident = incident;

錯誤。 盡管它的EntityState不變,但仍輸入了重復項。 除非這次,引用的結果是原始事件,不再是重復的事件。

解決方案是使用這樣的DBContext強制轉換並覆蓋ObjectContext。

if (model.Incident != null)
{
    DbContext dbContext = new DbContext(context, true);
    dbContext.Entry(model.Incident).State = EntityState.Unchanged;
}

盡管事件實體的EntityState保持不變,但ObjectContext仍將其識別為新的。 DBContext似乎更了解狀態。

我希望這可以幫助別人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM