Repository と UnitOfWork のパターンを正しく実装したかどうか 100% 確信があるわけではありませんが、これがどのように機能するかはわかりません。
たとえば、Apple と Orange という 2 つのオブジェクトがあります。
Apple は、次のように OrangeID を介して Orange に参加しています。
public class Apple
{
public int OrangeID { get; set; }
}
新しい Apple と新しい Orange を作成し、ID リンクを適切に設定したいと考えています。しかし、私には問題があります。Orange をデータベースに保存するまで、OrangeID はわかりません。
したがって、これは次のことを意味します。
var unitOfWork = new UnitOfWork();
Orange newOrange = new Orange();
OrangeRepository.Insert(newOrange);
unitOfWork.Commit();
//newOrange will have been updated with the actual ID
Apple newApple = new Apple(newOrange.ID);
etc...
上記の外にあるトランザクションがない限り、これはアトミック操作ではありません。しかし、それが UnitOfWork が処理するものだと思いましたか? または、データベースへの書き込み時に UnitOfWork.Commit() が適切な値を割り当てる必要がありますか?
ヘルプ/ヒントをいただければ幸いです。ダンカンに感謝します