2012-10-02 8 views
0

샤프 아키텍처의 코드를 확인하고 있습니다. 지금까지는 멋지지만 프레임 워크에서 DDD 값 객체를 구현하는 방법에 대해 고민하는 데 문제가 있습니다 (코드에서 언급하지 않는 것 같습니다). 엔티티에 대해서만 기본 Entity 클래스와 Repository base가 사용된다고 가정합니다. 프레임 워크에서 값 객체를 구현하는 방법에 대한 아이디어가 있습니까?샤프 아키텍처 값 객체

답변

0

Sharp Arch에는 이름 공간 SharpArch.Domain.DomainModel에 ValueObject 클래스가 있습니다. 이 객체는 BaseObject에서 상속되며 == 및! = 연산자와 Equals() 및 GetHashCode() 메서드를 재정의합니다. 메서드 재정의는 GetTypeSpecificSignatureProperties() 메서드를 사용하여 동등한 비교에 사용할 속성을 가져 오는 두 메서드의 BaseObject 버전을 호출하기 만합니다.

결론은 법인의 평등

  1. 참조 평등
  2. 같은 유형에 따라 결정된다는 점이다?
  3. 이드의은 BaseObject의이 방법
    1. 참조 평등
    2. 동일 유형

      사용되고 같음 상기 [DomainSignature] 특성 ValueObjects 들어

    장식 모두 동일한 속성

  4. 비교입니까?
  5. 모든 공용 속성

이 단순화 조금있다 비교, 난 당신이 github의에서 최신 코드를 얻고 언급 한 3 종류의 코드를 통해 자신을 읽으십시오.

편집 : 지속성과 관련하여 this SO question이 도움이 될 수 있습니다. 그 외에는 공식 NH 및 Fluent NH 설명서를 참조하십시오.

1

값 개체는 기본 클래스를 필요로하지 않는 단순 개체입니다. (엔터티가 기본 클래스를 갖는 유일한 이유는 ID를 기반으로 동등성을 제공하는 것입니다.) 값 객체를 구현한다는 것은 도메인의 값을 나타내는 클래스를 만드는 것을 의미합니다. 많은 시간 가치 객체는 불변이어야하고 동등한 비교 방법을 제공하여 동일한 유형의 다른 값 객체와의 동등성을 결정해야합니다. 보세요 here.

+0

샤프 아키텍쳐의 컨텍스트에서 값 객체는 단순히 어떤 것을 상속받지 않는 POCO 객체일까요? 그럼에도 불구하고 내 영속성 메커니즘에서는 별도의 테이블로 표현할 수 있습니다. 맞습니까? 하지만 내 값 개체 클래스와 데이터베이스를 어떻게 연결합니까? –