WCFサービスを公開するアプリケーションを開発しています。DALでEntityFramework4.1を使用しています。問題は、エンティティをロードするときです(たとえば、Orderを持っている顧客がOrderDetailを持っているとします)。ロードした後、Customer、Order、およびOrderDetailオブジェクトにいくつかの変更を加え(いくつかの新しい注文が追加され、いくつかの既存の注文が削除/更新されます)、オブジェクトグラフをWCFサービスに送信して次のように更新します。
Customer oCustomer;
using(var context = new MyContext) //MyContext is dbContext
{
oCustomer = context.Include("Order.OrderDetail").Find(1);
}
oCustomer.Name ="blah blah";
Order oOrder1 = oCustomer.Order.Where(obj=>obj.Id == 2);
oOrder1.Description = "blah blah";
oOrder1.OrderDetail.Quantity = 10;
Order oOrder2 = new Order { ... } //properties of Order are set.
oCustomer.Order.Add(oOrder2);
oCustomer.Order.Remove(context.Order.Find(1));
ServiceClient client = new ServiceClient();
client.SaveCustomer(oCustomer);
サーバー側で更新された顧客のObjectGraphを受け取ったとき、現在変更追跡がないため、どの注文が削除され、どの注文が変更されたかわかりません。どの順序を削除し、どの順序を変更するかをどのように判断できますか?Entity Framework 4.1でオブジェクトグラフの変更を追跡する方法はありますか?
注:以前は、この問題を解決するセルフトラッキングエンティティを使用していましたが、WCFサービスがJavaクライアントアプリでも使用されるため、STEを削除する必要がありました。したがって、STEは私にとってオプションではありません。