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 に答える