문제

가치 객체에는 정체성이 없습니다. ORM은 데이터베이스를 업데이트하려면 신원이 필요합니다.

ORM을 속이는 방법?

(ORM이 다른 어셈블리에 살고 동일한 어셈블리로 이동하는 것은 허용되지 않기 때문에 내부 객체에 대한 ID 표시가 작동하지 않습니다).

미리 감사드립니다.

도움이 되었습니까?

해결책

DDD가 가치있는 객체에 대한 나의 이해하는 한, 단지 엔티티를 분할하는 방법 일뿐입니다. 값 객체를 데이터베이스에 ID와 함께 저장 해야하는 경우 값 객체가 아닙니다.

예시:

도메인 모델은 다음과 같습니다 (C#).

public class Customer : Entity
{
    public Guid CustomerID { get; }

    public string LastName { get; set; }

    public Address HomeAddress { get; set; }
}

public class Address : ValueObject
{
    public string Street { get; set; }

    public string City { get; set; }

    public string ZipCode { get; set; }
}

해당 데이터베이스 테이블은 다음과 비슷한 것으로 보입니다 (Pseudo-SQL).

CREATE TABLE Customers
(
    CustomerID,

    LastName,

    HomeAddress_Street,

    HomeAddress_City,

    HomeAddress_ZipCode,
)

주소를 별도의 테이블에 저장하려면 ID가있는 엔티티로 만들 것입니다.

다른 팁

Eric Evans는 "엔티티가 신원을 가지고 있고, 가치 객체는 그렇지 않습니다"에 대해 이야기 할 때, 그는 데이터베이스의 ID 열에 대해 이야기하지 않습니다 - 그는 신원에 대해 신분에 대해 이야기하고 있습니다. 개념.

VO에는 없다 개념 신원. 그렇다고해서 그들이 가져서는 안된다는 의미는 아닙니다 고집 신원. 지속성 구현이 구름을 흐리게하지 마십시오. 엔티티 대 VO에 대한 이해가 있습니다.

내 게시물을 참조하십시오 여기.

개인적으로 나는 값 객체에 ID 필드를 가지고 있습니다 - 나는 그것을 값 객체 (예 : 이름, 위치 등)의 다른 속성으로 취급합니다.

진정한 DDD는 아니지만 저에게 효과적입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top