ここに大きな設計上の欠陥がありますが、解決には問題があります。DDD - DBキーを返すリポジトリパターン?
ビジネスのニーズは多少ありますので、これを単純にしておきます。 私たちは、購入したテーブルと返品のテーブルを持っています。返品が行われると、db内の最も古い購入に戻ってきたものを見つけ、それを「返品済み」テーブルに記録する必要があります。
したがって、返品を挿入すると、その取引内で返品を購入記録に適用する必要があります。
今のところ、私たちは、挿入のためにリポジトリを呼び出すサービスを持っています。サービスは、挿入されたレコードのキーが何であるかを知る必要があるため、そのキーを使用して「適用済み」レコードを挿入してトランザクションを終了することができます。
私は、リポジトリがこの種のデータを返すべきではないということを理解しているので、基本的に固執しています。これはリポジトリがコレクションであるという考えを打ち消していないのですか?
代替手段は何ですか。
明確化:リターンはあるので、ときに我々は購入テーブル、リターンテーブル、および適用される表は、この purchaseId returnId qtyReturned
のように見えます
アプライド・テーブルを持っている
挿入された私は購入のID(いくつかのビジネスルールによって決まる)と新しく挿入されたリターンのIDが必要です。
こんにちはアーサー、感謝を。私はあなたがこれでどこに行くのか見ていると思うが、上記の私の説明を参照してください。適用されたテーブルに挿入するために挿入された戻り値のIDの必要性をどうやって処理するのですか? – jlembke
追加のコメントを参照してください。それがあなたに役立つことを願っています について、 –
私はこのデザインパターンを "場所全体のリポジトリ"と呼びます。 – zvolkov