データ転送オブジェクトを使用して、エンティティフレームワークとビジネス層およびユーザー層との間でデータを転送します。 DTOに変換されたオブジェクトを取得した場合、エンティティフレームワークで正しいオブジェクトを更新し、複製を挿入するだけではどうすればよいのでしょうか。
次のコードは、厳密に型指定されたビューからMVCのコントローラパラメータとして作成されたEF 4エンティティを更新します。
エンティティがコンテキストに追加されたら、ObjectStateManagerを使用して状態をAddedからModifiedに変更するのがトリックです。
MyEntities db = new MyEntities();
db.Product.AddObject(product);
db.ObjectStateManager.ChangeObjectState(product, System.Data.EntityState.Modified);
return db.SaveChanges() > 0;
EF5を使用している場合は、@ Sean Millsのコメントに従って。
((IObjectContextAdapter) db).ObjectContext.ObjectStateManager.ChangeObjectState(entity, System.Data.EntityState.Added);