我需要檢索實體的大圖,在UI中對其進行操作(添加,更新,刪除),然後將其全部存回數據庫。經過各種SO問題和實驗後,我發現這種質量「分離圖更新」方法非常成問題,所以我現在正在重新思考我的方法。雙層WPF應用程序中的POCO實體
它只是一個2層WPF應用程序,所以我現在正考慮在用於操作實體圖形的UI期間存在長時間運行的上下文 - 這樣它就可以自動跟蹤更改。不過,我不確定如何在體系結構上處理這個問題。
該應用程序目前有三個項目 - 用戶界面,業務層和一個用於生成實體的edmx。我的業務層有一個CustomerManager
類,它公開一個方法來檢索客戶圖(訂單,訂單行等)以及持久化客戶圖的方法。假設UI持有CustomerManager
類的同一個實例,並因此具有相同的上下文,則會跟蹤對圖的更改(添加和更改實體)。
刪除的實體是比較麻煩一些,因爲上下文必須使用要做到這一點,i.e.:-
context.Set<Order>().Remove(orderToDelete);
尋找一些建築的建議真的。我只是在我的CustomerManager
類中暴露了DeleteOrder
方法嗎?鑑於我有十幾種其他實體類型,我想可能需要公開類似的方法來刪除訂單,產品等。
這是一種明智的方法,讓用戶界面保持同一個CustomerManager
實例,或者在那裏一個更好的方法來管理長期運行的上下文? DeleteOrder
方法的合理位置應該在我的Customer實體(部分)類中,但由於這些類與業務層(這是上下文所在的位置)分開的項目中,我想我不能這樣做(除非我將上下文傳遞給DeleteOrder方法)?
對於完全斷開的情況,您需要二級緩存。 EF沒有開箱即用。 (NHibernate的)。本文可以幫助:http://msdn.microsoft.com/en-us/magazine/hh394143.aspx –