DbEntityEntry.CurrentValues.SetValues()メソッドを使用して、エンティティ以外のDTOからの値で既存のエンティティを更新しやすくしようとしています(http://blogs.msdn.com/b/adonet/archive/2011/01を参照)。 /30/using-dbcontext-in-ef-feature-ctp5-part-5-working-with-property-values.aspx)
ただし、DbEntityEntryへの依存関係を削除するのに問題があります(モック、テスト用)。これが私がやりたいことの例です:
var entity = dbSet.Find(dto.Id);
var entry = context.Entry(entity);
entry.CurrentValues.SetValues(dto);
context.SaveChanges();
私も考慮しました:
EntityType entity = new EntityType() { Id = dto.Id };
context.Attach(entity);
var entry = context.Entry(entity);
entry.CurrentValues.SetValues(entity);
context.SaveChanges();
実際のDbContextを操作する場合、両方を見つけることができたのは妥当なようですが、コンテキストをIMyContextに抽象化すると、エンティティのDbEntityEntryを取得する機能が失われ、SetValuesオプションが失われます。
この問題を回避する方法はありますか、それとも、弾丸を噛んで、DTOからエンティティに変更されたプロパティを手動で設定する必要がありますか(多くのプロパティを持つエンティティの場合、多くの定型文になる可能性があります)?
(私はEFにかなり慣れていないので、これが私の最初のStackOverflowの質問なので、優しくしてください)