마스터라는 루트 엔터티와 Detail이라는 리프로 구성된 집계가 있습니다. 따라서 마스터 엔터티에는 Detail 엔터티 컬렉션이 있습니다. 클라이언트가 Detail 항목을 직접 추가하고 싶지 않기 때문에 Details 컬렉션을 클라이언트에 노출시키지 않습니다. 대신, 나는 새로운 디테일 아이템이 추가되는 즉시 도메인 인디 언트를 검증하는 마스터 엔티티에 AddDetail 메소드를 가지고 있으며, 그 곳에서 도메인 규칙을 적용 할 수 있습니다. 세부 사항은 읽기 전용 IEnumerable 속성으로 공개됩니다. MasterRepository에서 Details 항목을로드하려고 할 때 문제가 발생합니다. Details 컬렉션에 항목을 추가 할 수 없으므로 마스터 엔터티의 상태에 속하는 세부 정보를로드하는 방법을 알지 못합니다. 반면에 마스터 엔티티의 상태를로드하는 동안 AddDetail 메서드를 사용하는 것은 좋은 습관이라고 생각하지 않습니다. 그 이유는 룰이 이미 적용 되었기 때문이며 엔티티의 상태를로드하는 동안이를 확인하는 중복 된 오버로드가 될 것이기 때문입니다 . 또한 새로운 세부 정보를 추가하면 엔티티를로드하는 동안 발생하지 않으려는 일부 도메인 이벤트가 트리거됩니다.DDD에서 도메인 엔터티의 자식 컬렉션로드
0
A
답변
2
가 나는 마스터 엔티티의 상태
를로드하는 동안 당신은 바로 AddDetail
방법의 사용되는 AddDetail 방법을 사용하는 것이 좋습니다 좋은 생각이 아니다 생각하지 않습니다.
마스터 엔티티 상태의 일부인 세부 정보를로드하는 방법을 모르겠습니다.
Master
엔티티의 다른 속성을 어떻게로드합니까?
- 으로 ORMs 민간 분야 (예를 들어 NHibernate에, EntityFramework)를 매핑 할 수 있습니다 :
가능한 옵션이 많이 나는 또 다른 질문 (How to retrieve Domain Object from Repositories)를 응답 언급이 있습니다.
- 개인 필드에 액세스 할 때 반사를 사용할 수 있습니다.
- 컬렉션은 엔티티를 구성하는 데 사용되는 공용 생성자를 통해 전달 될 수 있습니다. 컬렉션에 공개 설정자를 사용하지 않는 것이 좋습니다.
Detail
개체의 집합이Master
의 속성은 내가 다른 속성을로드하기 위해 사용되는 방법을 사용하는 것이 간단하기 때문에 - 3 번째 부분 프레임 워크는 때때로 (예를 들어, AutoMapper)
유용 할 수 있습니다.
1
사용중인 언어를 말하지 않았지만 ORM 프레임 워크는 대개 리플렉션을 통해 마스터의 내부 필드에 직접 액세스합니다.
반영하지 않고 언어를 사용하는 경우 필드에 대한 패키지/친구 액세스 권한이있는 내부 유틸리티 클래스 (예 : 동일한 패키지에 있음)를 추가 할 수 있으며 리포지토리에서 액세스 할 수 있습니다 필드를 직접.
관련 문제
- 1. DDD에서 부분 값을 가질 수있는 엔터티의 컬렉션 속성입니까?
- 2. Eager Entity Framework에서 여러 자식 컬렉션로드 중
- 3. DDD에서 도메인 이벤트를 사용하는 올바른 방법입니까?
- 4. 도메인 개체와 서비스는 DDD에서 어떻게 상호 작용합니까?
- 5. ToFuture로 지연 하위 컬렉션로드
- 6. Dapper 닷넷으로 도메인 엔터티의 개인 속성 매핑하기
- 7. 도메인 엔터티의 고유 값 유효성 검사
- 8. 도메인 개체 및 EF 엔터티의 DDD 분리
- 9. DDD에서 소프트 삭제
- 10. 도메인 서비스와 응용 프로그램 서비스 비교 도메인 엔터티의 동작 (메서드)
- 11. NHibernate 컬렉션로드 중, "컬렉션로드 중 불법적 인 접근"
- 12. Magento : 특정 제품 컬렉션로드
- 13. 모델 또는 컬렉션로드 중
- 14. "컬렉션로드 불법 액세스"오류
- 15. DDD에서 저장소와의 동일성 충돌
- 16. DDD에서 db 디자인 또는 도메인 객체 디자인으로 시작 하시겠습니까?
- 17. DDD에서 도메인 객체 모델링보다 나은 것은 어느 것입니까?
- 18. DDD에서 누가 도메인 이벤트를 처리 할 수 있어야합니까?
- 19. DDD에서 도메인 모델 내에서 사용 된 이러한 유형의 객체는 무엇이라고합니까?
- 20. dbContext는 DDD에서 Bounded Context와 같은가요?
- 21. DDD에서 도메인의 현지화 부분이어야 함
- 22. 사용자 정의 필드가있는 판매 주문의 Magento 컬렉션로드
- 23. DDD에서 재귀 관계를 모델링하는 방법
- 24. DDD에서 중첩 된 집계 다루기
- 25. DDD에서 기능적으로 비밀번호가있는 위치
- 26. DDD에서 eFlags 해석
- 27. DDD에서 엔터티를 중첩하는 방법
- 28. Grails는 자식 도메인 객체를 얻습니다.
- 29. Entity Framework가있는 DDD에서 컨텍스트 인터페이스는 어디에 있어야합니까?
- 30. 한 엔터티의 NSManagedObjectID를 다른 엔터티의 속성으로 저장합니까?
답변 해 주셔서 감사합니다. 내 문제는 일반적인 디자인 문제로 간주하고 언어 별 해결 방법을 찾기 싫어서 언어를 언급하지 않았습니다. – Daniel