永続性の無視/単体テストなどを可能にするために、リポジトリと作業単位のパターンに従うシステムを構築しようとしています。ロールバックの処理に関するアドバイスを探しています。理想的には POCO を使用したいのですが、いくつかの断片を提供するために、少なくともインターフェイスを実装する必要があると思います。
したがって、1 つのコンテキスト/作業単位である 2 つのリポジトリがあるとします。
1 つの項目を追加し、別の項目を修正し、3 つ目の項目を削除します。2 番目のリポジトリについて繰り返してから、ロールバックを呼び出します。
過去に、これには DataSet に似たものを使用しました。各オブジェクトには、pendingNew、pendingAmended、pendingDeleted、clean の状態があります。ロールバック用のオブジェクトの最後に保持されたバージョンのコピーもあります。
これをどのように実装しますか?
編集:
わかりました、これが私が実際に頭を悩ませようとしていると思うことです。パターン化する準備をしてください:)
最終的にプロジェクトは WPF MVVM です。そのため、ここにある店舗のモデルを調べています。
モデルが提供する必要がある機能を提供するために、モデルは UOW とリポジトリを使用する必要があると思いますが、モデルをリポジトリのアイデアと混同しようとしてきたと思います。その方がいいですか?
完全な永続性を無視したいので、ドメインに Customer、Order、および OrderLines が含まれていると想像してください。
GUI には、ユーザーが顧客の詳細、注文の詳細、および 1-n OrderLine の詳細を入力できる 1 つのボタンの新しい注文があるとしましょう。彼は保存を押してデータベースに移動しますが、キャンセルを押してもデータベースに移動しません。
したがって、この場合、モデルは CustomerRepository に顧客を要求し、次に OrderRepository に新しい Order を要求し、次に OrderLineRepository に新しい各 Line を要求し、Unit of Work にそれらを保存するように指示します。
それは合理的に聞こえますか?それは私にはそうです、私はそれが分離が定義される場所だと思います。モデルとリポジトリの間に別の API を用意したいと思っています。いいえ、それはばかげています。
編集 2: これは、少し役に立った優れた記事です。