[英]Using Entity Framework 6 and modifying a record EntityState.Modified not being set
[英]Entity Framework won't update record after SaveChanges() with state=EntityState.Modified
我正在嘗試使用Entity Framework進行簡單的更新。 有人可以告訴我我的更新聲明有什么問題嗎?
一切順利進行-運行時沒有錯誤,但是數據庫中沒有任何更改。
這是我的代碼,希望對您有所幫助
var cartItem = context.Carts.FirstOrDefault(x => x.id == id);
cartItem.Quantity = quantity;
context.Entry(cartItem).State = EntityState.Modified;
context.Carts.Attach(cartItem);
context.SaveChanges();
這是因為您要在附加實體之前調用SaveChanges
方法:
var cartItem = context.Carts.FirstOrDefault(x => x.id == id);
cartItem.Quantity = quantity;
context.SaveChanges();
另外,如果您尚未禁用EF更改跟蹤,則無需將State
更改為Modified
,EF會為您完成這項工作。 調用Attach
方法時, Unchanged
State
屬性設置為Unchanged
。
您可以通過以下方式使用Attach
:
var cartItem= new Cart{id=id}; //Create an instance of your entity setting the key
context.Carts.Attach(cartItem);// Attach the entity to the context
cartItem.Quantity = quantity; //Set the property
//If you haven't disabled change tracking or proxy creation, then you don't need to change the State, EF will do it.
context.Entry(cartItem).State = EntityState.Modified;
context.SaveChanges();
我找到了解決我問題的方法。 問題不是代碼錯誤,而是實體框架本身的錯誤,當存在一個aspx頁面與edmx在SaveChanges上生成的對象之一具有相同的名稱,而不是采用當前項目的模型屬性時, or / m使用網頁的屬性並引發空引用異常,因為它找不到查詢的正確值。 謝謝您的協助和耐心。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.