나는 일반적인 저장소 웹 주위에 떠 그 중 하나 또한이 세 자녀 개체의 X, Y 및 Z를여러 respositories
이있는 기업이를 루트 aggreate에 여러 아이 엔티티를 추가 또는 전화 .. . 내 서비스 방법 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();
지금 나 자신에게 물었다, 충분히 O를 안 R 나은 단지 대신 아이들 컬렉션이 흥분 되나요 추가 작업을 수행 repoXXX에 모든 foreach.Add 작업을 수행하는
repoA.Update(objectA);
repoY.Delete(objectA.Id);
foreach:
objectA.CollectionX.Add(objectX);
objectA.CollectionY.Add(objectY);
objectA.CollectionZ.Add(objectZ);
_unitOfWork.Commit();
(!) 참고 : repoY에 대한 삭제 작업이 inmemory 할 수 없습니다
objects_Y가 컨텍스트에로드되지 않기 때문입니다.
당신은 어떻게 생각하십니까?
나는이 문제를 도메인 구동 디자인과 함께 태그를 붙였습니다. 아마도이 시나리오는 이와 관련이 있습니다.
AXYZ() 메소드에는 비즈니스 트랜잭션 내에서 저장소 호출을 그룹화한다는 점을 제외하면 자체 논리가 없습니다. 나는 당신의 의견 대부분에 동의합니다. 그러나 하나의 문제/우려가 있습니다. DDD 접근법을 엄격하게 따르는 경우 objectA.DeleteY (ObjectY)가 있어야합니다. CollectionOfObjectY는 내 GenericRepository의 FetchById 메소드를 통해 반입됩니다. 아래의 DeleteY 메소드는 addXXX 메소드처럼 foreach에서도 호출됩니다. 어떻게 생각해? –
Elisabeth