假設我有一個像這樣的東西代碼更新記錄的通用數據訪問層方法:如何通過在方法多lambda表達式
public virtual void Update<P>(Expression<Func<T, P>> excludeColumn, params T[] items)
{
foreach (T item in items)
{
_entities.Entry(item).State = EntityState.Modified;
_entities.Entry(item).Property(excludeColumn).IsModified = false;
}
_entities.SaveChanges();
}
在這裏,我以excludeColumn
參數有關的更新不計列,我傳遞的值在該參數這樣
_companyProfileRepository.Update(x => x.EmailAddress, records);
x => x.EmailAddress
是我傳遞到通用Update
方法的表達式。我的問題是我想要傳入多個列到Update
方法,因爲有時我需要排除多於一列,但我的方法不支持多列機制。
任何人都可以幫我解決這個問題嗎?
我的理解是EF已經跟蹤更改您的實體和只更新修改的屬性,那麼,爲什麼你需要排除列? – saille
,因爲我用空屬性發送進行更新,即使數據庫中有值,因爲這是敏感數據,我不想在視圖中顯示,但用戶可以更新其他值 –
您可能想要考慮添加例如實體和視圖之間的一個圖層,例如視圖模型 - 請參閱此問題:https://stackoverflow.com/questions/11064316/what-is-viewmodel-in-mvc。 – saille