我相信这是问别人,但我找不到直接的解决方案。 我的Api正在传递对象模型,并且在服务器端,那个未传递的对象的每个值都被认为是null(有意义)。 有没有办法告诉EF6不要以传递对象的空值更新实体,我不需要写每个属性并检查它是否为空。EF仓库与UoW更新
伪代码
API
Update(int id, TaskEntity obj)
{
unitOfWork.Tasks.Update(id, userTask);
...
unitOfWork.Save()
}
回购更新
Update(int id, T entity)
{
var existingRecord = Get(id); //Gets entity from db based on passed id
if (existingRecord != null)
{
var attachedEntry = Context.Entry(existingRecord);
attachedEntry.CurrentValues.SetValues(entity);
}
}
我的问题是,随着空值的任何数据实际上将改写用null现有的数据库记录值。
请给我一个解决方案或文章,这是解决。我应该去思考,也许automapper可以处理这个(它不是我相信的目的),或者应该写一些辅助方法,因为我的对象可以包含子对象。
预先感谢您。
您是否有TaskEntity中的属性列表,您将在此更新方法中进行更新?或者你想更新所有的属性,不是null。但是,那么如何区分未提供的值与我想要删除/更新为空的值? – Developer
如果我正确理解你的问题,你可以将所有相关信息传递给方法,并对整个实体进行更新。 – Eldho
如果你想使用反射,你可以这样做http://stackoverflow.com/questions/17385472/entity-framework-only-update-values-that-are-not-null。但个人我不觉得这是最好的东西 – Eldho