這是一個MVC應用程序,其中實體框架代碼優先爲ORM和MEF作爲IoC。 如果我將DbContext
標記爲PartCreationPolicy.Shared
,則說明每次嘗試執行編輯時,容器中都存在對象。 但是如果我簡單地將DbContext
標記爲PartCreationPolicy.NonShared
,那麼會如何爲每個請求創建? 對此有沒有可怕的性能影響?MVC中的NonShared DbContext是一種不好的做法?
更新 這裏是保存代碼:
Provider IRepository<Provider>.Put(Provider item)
{
if (item.Id == Guid.Empty)
{
item.Id = Guid.NewGuid();
this.Providers.Add(item);
}
else this.Entry<Provider>(item).State = EntityState.Modified;
return item;
}
這是錯誤當共享
具有相同鍵的對象已經在ObjectStateManager存在。 ObjectStateManager無法使用相同的 鍵追蹤多個對象。
我剛剛發佈了代碼和錯誤消息。 – Vahid 2013-04-06 14:46:33
我認爲這個問題與'提供者'表中的多個對象有相同的關係 – 2013-04-06 14:46:48
@BhushanFirake這是不可能的,Code First使用'[Key]'屬性將形成主鍵,而不會**允許重複。 – mattytommo 2013-04-06 14:48:08