2012-11-25 14 views
0

我有mvc視圖,它有一些來自實體的列。當我執行db.SaveChanges()時,所有不屬於該視圖一部分的列將被更新爲NULL,因此將覆蓋數據庫記錄中存在的任何值。那太蹩腳了。 我知道我可以爲視圖做模型視圖,並綁定那些我想要的列。但是我正在尋找一種方法來簡單地告訴EF,在此特定更新期間'忽略'列,以便不更新MvC視圖中不存在的列。 我使用EF 5.任何建議?EF Persisting Columns忽略那些不在視圖中

+0

你能表明該視圖數據傳送到在上下文中的實體的代碼? –

回答

0

我不知道爲什麼你要避免創建一個單獨的模型,但我想你知道你在做什麼,所以也許嘗試這種方法來欺騙EF以爲性質並沒有改變:

var entry = context.Entry(obj); 
entry.Property(name).IsModified = false; 

我沒有自己嘗試過,但在EF 5中應該可以。如果不起作用,請嘗試通過搜索entry.CurrentValues.PropertyNames集合然後將IsModified設置爲false來訪問屬性條目。

0

我想我需要的是這個

User u = db.Users.Find(user.UserID); 
     if (u!=null) { 

      TryUpdateModel(u); 
if (ModelState.IsValid) 
{ 
       db.SaveChanges(); 
}