我意識到更新實體時不先選擇它們是一個常見問題,許多解決方案已經在StackOverflow上,但是在閱讀完這些後我仍然遇到問題。更新在實體框架中具有所需屬性的實體
我用下面的代碼更新用戶entitiy:
using (var context = GetContext())
{
var userEntity = new UserEntity() { ID = userUpdate.ID };
context.Users.Attach(userEntity);
context.Entry(userEntity).CurrentValues.SetValues(userUpdate);
context.SaveChanges();
}
然而,這導致DbEntityValidationException
被拋出,因爲我的用戶entitiy有一些必需的特性,但這些不一定更新的設置實體。
有沒有辦法解決這個問題,或者它只是一個刪除所需屬性的情況?
謝謝!
爲什麼不限制a用於'UserEntity'的可變構造函數不會將其初始化爲無效狀態? –
在此實例中,我沒有所需屬性的值 - 例如,用戶實體需要Email屬性,但可能只有用戶的名稱正在更新,因此userUpdate不包含任何其他內容。如果不從數據庫中選擇用戶,我無法知道那些所需屬性設置爲什麼。 選擇實體,然後更新它_does_工作,但如果不需要,它不完全適合做不必要的查詢。 –
@NathanCooper需要一個無參數的構造函數,否則EF將無法創建任何實體。 – DavidG