假設我在實體類public bool isActive
等上有一堆布爾屬性等。將通過在Web應用程序中設置複選框來操作這些值。我只會一次性發回一個更改後的名稱/值對和主鍵,如{ isActive : true , NewsPageID: 34 }
,默認的模型聯編程序將創建一個只有這兩個屬性設置的NewsPage對象。現在,如果我運行下面的代碼,它不僅會更新已在由模型綁定器創建的NewsPage對象上設置的屬性的值,而且還會嘗試爲現有實體對象清空所有其他非設置值,因爲它們未在由模型聯編程序創建的NewsPage對象上設置。是否可以在不觸及其他實體對象的情況下自動更新所選屬性
是否有可能以某種方式告訴實體框架不要查看設置爲null的屬性,並試圖將這些更改保存回檢索到的實體對象,因此數據庫?也許有一些我可以編寫的代碼只會利用模型聯編程序創建的NewsPage對象上的非空值及其屬性名稱,並且只會嘗試更新這些特定的屬性?
[HttpPost]
public PartialViewResult SaveNews(NewsPage Np)
{
Np.ModifyDate = DateTime.Now;
_db.NewsPages.Attach(Np);
_db.ObjectStateManager.ChangeObjectState(Np, System.Data.EntityState.Modified);
_db.SaveChanges();
_db.Dispose();
return PartialView("MonthNewsData");
}
我當然可以做下面的事情,但我有一種感覺,它不是最佳的解決方案。特別是考慮到我需要設置6個布爾屬性。
[HttpPost]
public PartialViewResult SaveNews(int NewsPageID, bool isActive, bool isOnFrontPage)
{
if (isActive != null) { //Get entity and update this property }
if (isOnFontPage != null) { //Get entity and update this property }
}
將可能更容易不變的道具傳遞給模型綁定,或者寫一個自定義,並得到完整的對象那裏。 – veblock 2012-07-06 03:49:56