エンティティの大規模なグラフを取得し、UI で操作 (追加、更新、削除) してから、すべてをデータベースに永続化する必要があります。さまざまなSOの質問と実験の後、この大量の「切り離されたグラフの更新」アプローチが非常に問題があることがわかったので、現在、アプローチを再考しています。
これは 2 層の WPF アプリにすぎないため、エンティティ グラフを操作するために使用される UI の間、長時間実行されるコンテキストが存在することを考えています。これにより、変更を自動的に追跡できます。ただし、これをアーキテクチャ的にアプローチする方法がわかりません。
アプリケーションには現在、UI、ビジネス層、および edmx と生成されたエンティティ用の 3 つのプロジェクトがあります。私のビジネス層にはCustomerManager
、顧客グラフ (注文、注文明細など) を取得するメソッドと、顧客グラフを永続化するメソッドを公開するクラスがあります。CustomerManager
UI がクラスの同じインスタンス、つまり同じコンテキストを保持すると仮定すると、グラフへの変更 (エンティティの追加と変更) が追跡されます。
エンティティの削除は、これを行うためにコンテキストを使用する必要があるため、もう少し注意が必要です。
context.Set<Order>().Remove(orderToDelete);
建築に関するアドバイスを本当に探しています。これを行うクラスでDeleteOrder
メソッドを公開するだけですか? CustomerManager
他にも多数のエンティティ タイプがあることを考えると、注文や製品などを削除するには、同様のメソッドを公開する必要があると思われます。
UI が同じインスタンスを保持することは賢明なアプローチCustomerManager
ですか、それとも長時間実行されるコンテキストを管理するためのより良い方法はありますか? メソッドの論理的な場所はDeleteOrder
Customer エンティティ (部分) クラスになりますが、これらのクラスはビジネス層 (コンテキストが存在する場所) とは別のプロジェクトにあるため、これを行うことはできないと思います (コンテキストを DeleteOrder メソッドに渡します)?