我有一个实体 A,它有三个子实体 X、Y 和 Z。
我还有一个通用存储库,其中一个漂浮在网络上......
在我的服务方法 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();
现在我问自己,在 repoXXX 上执行所有 foreach.Add 操作是否不够或更好,而只是对子集合执行 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 执行删除操作。
你怎么看?
我也用域驱动设计标记了这个问题,也许这个场景与它有关?