내가 공부 한 DDD에 대한 많은 튜토리얼이 대부분 이론을 다루고 있습니다. 그것들은 모두 기본적인 코드 예제를 가지고 있습니다 (Pluralsight 및 이와 유사한).
웹에서는 소수의 사람들이 EDD를 사용하여 DDD를 다루는 학습서를 작성하려고 시도합니다. 잠깐 공부를 시작하면 서로 다른 점을 빨리 알 수 있습니다. 어떤 사람들은 앱을 최소한으로 유지하고 EF 위에 저장소 같은 추가 레이어를 피하는 것을 권장하고 , 다른 사람들은 추가 레이어를 생성하여 결정적으로 추가 DbContext
루트를 생성하고 종종 집계 루트 에 주입 하여 SRP를 위반하는 경우가 있습니다.
의견 기반 질문을한다면 정말 죄송하지만 ...
실습에서 Entity Framework는 가장 강력하고 널리 사용되는 ORM 중 하나입니다. 불행히도 DDD를 다루는 포괄적 인 코스는 찾을 수 없습니다.
중요한 측면 :
Entity Framework는 UoW & Repository (
DbSet
)를 기본적으로 제공 합니다EF를 사용하면 모델에 탐색 속성이 있습니다
EF와 함께 모든 모델은 항상 사용 가능한 오프
DbContext
(그들이로 표시됩니다DbSet
)
함정 :
하위 모델이 집계 루트를 통해서만 영향을받는 것을 보장 할 수는 없습니다. 모델에는 탐색 속성이 있으며 모델을 수정하고 호출 할 수 있습니다.
dbContext.SaveChanges()
DbContext
당신 과 함께 모든 모델에 액세스 할 수 있습니다, 따라서 집계 루트 를 우회당신은을 통해 루트 객체의 자식에 대한 액세스를 제한 할 수
ModelBuilder
있는OnModelCreating
방법 필드로 표시하여 (나는 아직도 DDD에 대해 갈 수있는 올바른 방법이다 생각하지 않는다 플러스 이것이 미래에 발생할 수 모험의 종류 어떤 평가하기 어렵습니다 - 매우 회의적 )
갈등 :
집계를 반환 하는 다른 저장소 계층을 구현 하지 않으면 위에서 언급 한 함정을 부분적으로 해결할 수조차 없습니다.
저장소의 추가 계층을 구현 함으로써 EF의 내장 기능을 무시하고 (
DbSet
이미 모두 레포지토리 ) 앱을 지나치게 복잡하게 만듭니다.
내 결론 :
나의 무지를 용서해주십시오. 그러나 위의 정보에 근거하면 – 그것은 Entity Framework 가 도메인 주도 설계에 적합하지 않거나 도메인 주도 설계가 불완전 하고 오래된 접근법입니다.
각 접근법마다 장점이 있다고 생각하지만 지금은 완전히 잃어 버렸고 DDD와 EF를 조정하는 방법에 대한 최소한의 아이디어가 없습니다.
내가 틀렸다면 누구나 EF를 사용하여 DDD를 수행하는 방법에 대한 간단한 지시 사항을 자세히 설명하거나 적절한 코드 예제를 제공 할 수 있습니까?