EntityFramework使用另一个的值更新实体

本文关键字:更新 实体 另一个 EntityFramework | 更新日期: 2023-09-27 18:29:52

我有一个JSON字符串,我正在将其取消排列为EF实体。

Report result = js.Deserialize<Report>(json);

我正在尝试用相同的ID更新上下文中的实体,使其具有我的取消rlized ID的值。

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个属性。

EntityFramework使用另一个的值更新实体

这应该对您有效。

context.Reports.Entry(reportToUpdate).CurrentValues.SetValues(result);
context.SaveChanges();

请注意,SetValues不遵循导航属性或相关对象,只遵循实体本身的复杂/简单属性。

如果您已经填充了实体模型,那么您只需要附加实体

试试这样的东西。

_context.Reports.Attach(result);
_context.Entry(result).State= EntityState.Modified;

请点击此链接了解更多详细信息。