Pergunta

objetos

Valor não tem identidade. ORM precisa de identidade para atualizar o banco de dados.

Como enganar ORM?

(Marca de identificação para objeto valor como interno não funcionará porque vidas ORM em um conjunto diferente e movê-lo para o mesmo conjunto não é aceitável).

Agradecemos antecipadamente.

Foi útil?

Solução

Quanto à minha compreensão do DDD vai objetos de valor são apenas uma maneira de dividir suas entidades. Se um objeto de valor deve ser armazenado com um ID no banco de dados não é um objeto de valor.

Exemplo:

O modelo de domínio é assim (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; }
}

A tabela de banco de dados correspondente seria algo parecido com este (Pseudo-SQL):

CREATE TABLE Customers
(
    CustomerID,

    LastName,

    HomeAddress_Street,

    HomeAddress_City,

    HomeAddress_ZipCode,
)

Para armazenar os endereços em uma tabela separada você iria torná-lo uma entidade que tem uma identificação.

Outras dicas

Quando Eric Evans fala sobre "entidades têm identidade, objetos de valor não", ele não está falando sobre uma coluna de identificação na base de dados -. Ele está falando sobre a identidade como um conceito

VOs não têm conceitual identidade. Isso não significa que eles não devem ter persistência identidade. Não deixe que a persistência nuvem implementação sua compreensão de Entidades contra Vos.

Veja o meu post aqui .

Pessoalmente, tenho o campo ID no objeto de valor - eu tratá-lo como um outro atributo do objeto de valor (como nome, localização etc).

Pode não ser verdade DDD mas funciona para mim.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top