我意识到更新实体时不先选择它们是一个常见问题,许多解决方案已经在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