我正在開發一個將公開WCF服務的應用程序。我在DAL上使用Entity Framework 4.1。問題是當我加載一些實體(比如說一個客戶有順序,而順序又有OrderDetail)。加載它之後,我在Customer,Order和OrderDetail對象中進行了一些更改(添加了一些新訂單,並刪除/更新了一些現有訂單),並將對象圖發送到WCF服務以進行更新,如下所示。WCF,實體框架4.1和實體的狀態
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在服務器端,我不知道哪個訂單被除去,進行了修改,因爲沒有changetracking現在。我如何確定要刪除哪個訂單以及要修改哪個訂單?有什麼方法可以跟蹤實體框架4.1中對象圖中的更改嗎?
注意:以前我使用自追蹤實體來解決這個問題,但是我必須擺脫STE,因爲我的WCF服務也將被Java客戶端應用程序使用。所以,STE不適合我。
感謝您的指導。但是,我一直在閱讀所有的答案。我同意我的一些問題在某種意義上是重複的。爲了尋求更好更優雅的解決方案,我必須這樣做。 – Baig