我有一個Web應用程序(MVC 5,EntityFramework 6)。它通過DbContext連接到SQL數據庫。我遇到了一個問題,添加一個新的實體對象在實體集(但不是數據庫)中創建了重複條目,我不知道如何阻止這種情況發生。EF 6,將實體添加到DbContext創建重複的實體
控制器,其方法通過Ajax請求被稱爲:
public class CustomerController : Controller
{
MyDBEntities db = new MyDBEntities(); //DbContext
public ActionResult SaveStuff(string customerId, string stuff)
{
Customer customer = db.Single(c => c.ID.Equals(customerId));
Stuff stuff = new Stuff(stuff, customer);
db.Stuffs.Add(stuff);
db.SaveChanges();
return PartialView("MyControl", customer);
}
}
有顧客和東西之間的1-to-many關聯,並且在客戶一個「東西」導航屬性。
東西包括爲INT,串,和日期時間字段。
控制器方法返回一個由JavaScript使用的PartialView來刷新控件的內容。
將顯示「myControl」控制做到這一點:
var stuffs = Model.Stuffs.OrderByDescending(...);
當控制在這種情況下渲染,Model.Stuffs
包含重複的條目。有一個名爲Stuff
(可能是在控制方法中創建的新對象)的條目,以及名稱爲System.Data.Entity.DynamicProxies.Stuff_<uuid>
的條目,這些條目具有相同的確切數據(我想象的是從數據庫中讀取的)。
這只是一個問題,當我寫入,然後從同一Web請求中設置的實體讀取。其他/將來的Web請求導致讀取沒有問題。我怎樣才能使這項工作正確?
「MyDBEntities.Configuration.ProxyCreationEnabled」的值是什麼? – 2014-11-06 05:37:09
您正在添加新條目。是否確定數據庫中沒有相同條目的條目?在這種情況下,您可能需要編輯同一條目 – Jags 2014-11-06 05:43:11
'Configuration.ProxyCreationEnabled'肯定已啓用,@VDohnal – 2014-11-06 06:03:56