Я разрабатываю приложение, которое будет предоставлять сервисы WCF. Я использую Entity Framework 4.1 в DAL. Проблема в том, что я загружаю какую-то сущность (скажем, клиент, у которого есть 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);
Теперь, когда я получаю обновленный объектный граф клиента на стороне сервера, я не знаю, какой заказ был удален, а какой был изменен, поскольку отслеживание изменений в настоящее время не выполняется. Как я могу определить, какой ордер удалить и какой ордер изменить? Есть ли способ отследить изменения в моем графе объектов в Entity Framework 4.1?
ПРИМЕЧАНИЕ. Ранее я использовал Self Tracking Entities, которые решили эту проблему, но мне пришлось избавиться от STE, поскольку моя служба WCF также будет использоваться клиентскими приложениями Java. Таким образом, STEs не вариант для меня.