我有一个JSON字符串,我将其保存为EF权利。
Report result = js.Deserialize<Report>(json);
我正在尝试使用相同的ID更新我的上下文中的实体,以获得我的deserlized值。
var reportToUpdate _entities.Reports.Single(x => x.Id == result.Id)
我想做这样的事情
reportToUpdate = set all values to the values from result
context.SaveChanges();
我该怎么做?
我想避免做这样的事情:
report.param1 = result.param1
report.param3 = result.param3
report.param3 = result.param3
因为此实体上有大约50个属性。
答案 0 :(得分:8)
这应该适合你。
context.Reports.Entry(reportToUpdate).CurrentValues.SetValues(result);
context.SaveChanges();
请注意,SetValues不遵循导航属性或相关对象,只遵循实体本身的复杂/简单属性。
答案 1 :(得分:1)
如果您已经填充了实体模型,那么您只需要附加实体
尝试这样的事情。
_context.Reports.Attach(result);
_context.Entry(result).State= EntityState.Modified;
按照此link了解详情。