4

我有一个 JSON 字符串,我将它反序列化为一个 EF 实体。

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

我正在尝试使用相同的 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 个属性。

4

2 回答 2

8

这应该适合你。

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

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

于 2013-08-31T06:17:44.693 回答
1

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

尝试这样的事情。

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

点击此链接了解更多详情。

于 2013-08-31T06:26:17.367 回答