Devo utilizzare il campo Chiave primaria quando si confrontano due entità DDD utilizzando: .Equals

2

Dire che ho una classe come questa:

public abstract class Product 
    {
        public Guid id {get; set;}
        public string description {get; set;}
    }

Questa classe è popolata dal database. Sto scrivendo un test unitario per decidere se due prodotti sono uguali. Come faccio a stabilire se due entità sono uguali:

1) Solo guida: questa è la chiave primaria del database, quindi è unica. Non sono nemmeno sicuro che questo membro dovrebbe essere nella mia classe

2) Solo descrizione - questo è sempre univoco

3) GUID e descrizione

    
posta w0051977 17.08.2017 - 13:25
fonte

2 risposte

1

Quando due oggetti sono semanticamente uguali, un confronto con .equals() dovrebbe portare a un risultato positivo. Nota che non deve essere lo stesso identico oggetto / istanza.

In un database un'entità è definita dalla sua chiave primaria, ma penso che sia ancora possibile avere due entità diverse, che sono semanticamente uguali. Quindi, confrontandoli con .equals() , mi aspetterei un risultato positivo.

Pertanto, andrei con l'opzione 2). Tuttavia, è difficile rispondere a questa domanda in generale, perché devi sempre pensare a quando due oggetti sono uguali, il che potrebbe variare a seconda del dominio in cui ti trovi. Quindi, in generale, questo dovrebbe essere parte della tua ingegneria dei requisiti.

    
risposta data 17.08.2017 - 13:36
fonte
1

In DDD, due oggetti si riferiscono allo stesso entity se hanno lo stesso ID ; quindi una domanda valida è questa: how to test if two C# objects refer to the same entity? .

How to check if two entities are equal? non è una domanda valida, almeno non generica. Che significa per te dominio che due entities sono uguali ? Tieni presente che questa domanda è una valida valida in caso di value objects ma una strana in caso di entities .

    
risposta data 17.08.2017 - 14:08
fonte

Leggi altre domande sui tag