簡體   English   中英

實體框架僅更新特定列-EntityState.Modified錯誤和Attach提供錯誤

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

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