[英]Entity Framework update only specific columns - EntityState.Modified error and Attach gives error
我在看stackoverflow並看到選擇的答案,這使我相信這樣做很好,但是卻收到此錯誤
//db.Entry(tips).State = EntityState.Modified;
db.tblTips.Attach(tips);
db.Entry(tips).Property(x => x.createdby).IsModified = false;
db.Entry(tips).Property(x => x.created).IsModified = false;
tips.updated = DateTime.Now;
var recordsUpdated = db.SaveChanges();
以下兩行均出現錯誤
db.Entry(tips).State = EntityState.Modified;
or..
db.tblTips.Attach(tips);
附加類型為'BRM.Data.Models.tblTips'的實體失敗,因為相同類型的另一個實體已經具有相同的主鍵值。 如果圖形中的任何實體具有相互沖突的鍵值,則使用“附加”方法或將實體的狀態設置為“不變”或“修改”時,可能會發生這種情況。 這可能是因為某些實體是新實體,尚未收到數據庫生成的鍵值。 在這種情況下,請使用“添加”方法或“已添加”實體狀態來跟蹤圖形,然后根據需要將非新實體的狀態設置為“未更改”或“已修改”。
我應該這樣做:
if (TryUpdateModel(newsToUpdate, "",
new string[] { "LastName", "FirstMidName", "EnrollmentDate" }))
我也會有int和datetime
更新
1. Should I use `db.Entry(newsToUpdate).State = EntityState.Modified;`
2. OR use `db.Entry(newsToUpdate).State = EntityState.Modified;`
在下面,我看到如果使用方法參數中的模型來更新特定字段,然后對newToUpdate
使用.Entry
,這是從數據庫中newToUpdate
的模型-這看起來“還好嗎?”
db.Entry(newsToUpdate).State = EntityState.Modified;
//db.tblTips.Attach(newsToUpdate);
db.Entry(newsToUpdate).Property(x => x.createdby).IsModified = false;
db.Entry(newsToUpdate).Property(x => x.created).IsModified = false;
newsToUpdate.updated = DateTime.Now;
newsToUpdate.body = tips.body;
newsToUpdate.title = tips.title;
var recordsUpdated = db.SaveChanges();
好的,這有效
碼:
db.Entry(newsToUpdate).State = EntityState.Modified;
//db.tblTips.Attach(newsToUpdate);
db.Entry(newsToUpdate).Property(x => x.createdby).IsModified = false;
db.Entry(newsToUpdate).Property(x => x.created).IsModified = false;
newsToUpdate.updated = DateTime.Now;
newsToUpdate.body = tips.body;
newsToUpdate.title = tips.title;
var recordsUpdated = db.SaveChanges();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.