ここには大きな設計上の欠陥がありますが、私はそれを解決するのに苦労しています:
ビジネスニーズは少し複雑なので、これをシンプルに保つようにします。購入のテーブルと返品のテーブルがあります。返品が行われた場合、データベース内で最も古い購入に返品する一致を見つけて、「返品が適用された」テーブルに記録する必要があります。
したがって、返品を挿入するときは、そのトランザクション内で、返品を購入レコードに適用する必要があります。
現在のところ、挿入用のリポジトリを呼び出すサービスがあります。サービスは、挿入されたレコードのキーが何であるかを知る必要があります。これにより、サービスは、そのキーを使用して「適用された」レコードを挿入することでトランザクションを終了できます。
リポジトリがこの種のデータを返すべきではないというのが私の理解であるため、基本的に行き詰まっています。これは、リポジトリがコレクションであるという考えを打ち負かしませんか?
代替手段は何ですか?
明確化:
Purchaseテーブル、Returnテーブル、およびAppliedテーブルがあります。
適用されたテーブルは次のようになりますpurchaseIdreturnIdqtyReturned
したがって、返品が挿入されるときは、購入のID(いくつかのビジネスルールによって決定されます)と新しく挿入された返品のIDが必要です。