簡體   English   中英

在狀態為EntityState的SaveChanges()之后,實體框架不會更新記錄。

[英]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.

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