[英]How to update an entity in Entity Framework?
更新此實體時,出現以下錯誤:
我的數據庫類與我在ViewModel中的類不同
但我將其轉換。
請幫助我,並向我發送正確的代碼。
謝謝
我的錯誤:
附加類型為'DomainModel.Models.Tbl_Images'的實體失敗,因為相同類型的另一個實體已經具有相同的主鍵值。 如果圖形中的任何實體具有相互沖突的鍵值,則使用“附加”方法或將實體的狀態設置為“不變”或“修改”時,可能會發生這種情況。 這可能是因為某些實體是新實體,尚未收到數據庫生成的鍵值。 在這種情況下,請使用“添加”方法或“已添加”實體狀態來跟蹤圖形,然后根據需要將非新實體的狀態設置為“未更改”或“已修改”
我的代碼:
public bool Update(ImagesEditVM model)
{
bool result = false;
try
{
DomainModel.Models.Tbl_Images img = new Tbl_Images
{
Id = model.Id,
Code = model.Code,
Image = model.Image,
Language = model.Language,
Title = model.Title
};
db.Tbl_Images.Attach(img);
db.Entry<DomainModel.Models.Tbl_Images>(img).State = EntityState.Modified;
db.SaveChanges();
result = true;
return result;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
一種方法是先查詢圖像。 然后更新值並顯式調用SaveChanges
或SaveChangesAsync
。
try
{
var updatingImage = _db.Tbl_Images.FirstOrDefault(i => i.Id == model.Id);
if (updatingImage != null)
{
// either manually map those values or use auto mapper.
updatingImage.Code = model.Code;
updatingImage.Image = model.Image;
updatingImage.Language = model.Language;
updatingImage.Title = model.Title;
_db.Tbl_Images.Update(updatingImage);
_db.SaveChanges();
}
...
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
您可以嘗試以下操作:
public bool Update ( ImagesEditVM model )
{
bool result = false;
try
{
var existing = db.Tbl_Images.Find ( model.Id );
if ( existing == null )
{
context.Add ( model );
}
else
{
db.Entry ( existing ).CurrentValues.SetValues ( model);
}
context.SaveChanges ( );
result = true;
return result;
}
catch ( Exception ex )
{
throw new Exception ( ex.Message );
}
}
看到這個鏈接
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.