X、Y、Z という 3 つの子エンティティを持つエンティティ A があります。
私はまた、ウェブ上に浮かんでいるものの1つである汎用リポジトリを持っています...
私のサービスメソッドAXYZ()では
複数のリポジトリ呼び出しを行います: (疑似コード)
repoA.Update(objectA);
repoY.Delete(objectA.PK_Id);
foreach:
objectX.FK_ID = objectA.PK_ID;
repoX.Add(objectX);
foreach:
objectY.FK_ID = objectA.PK_ID;
repoY.Add(objectY);
foreach:
objectZ.FK_ID = objectA.PK_ID;
repoZ.Add(objectZ);
_unitOfWork.Commit();
ここで、すべての foreach.Add 操作を repoXXX に対してではなく、子コレクションに対して Add 操作を実行するだけでは十分ではないか、またはそれ以上に優れているのではないか、と自問しました。
repoA.Update(objectA);
repoY.Delete(objectA.Id);
foreach:
objectA.CollectionX.Add(objectX);
objectA.CollectionY.Add(objectY);
objectA.CollectionZ.Add(objectZ);
_unitOfWork.Commit();
補足:
objects_Y がコンテキストにロードされていないため、repoY の削除操作をメモリ内で実行できませんでした。
どう思いますか?
この質問にもドメイン駆動設計のタグを付けました。おそらく、このシナリオはそれと関係がありますか?