Recentemente ho posto questa domanda: Restituisci oggetti di dominio dal repository
Sono arrivato attraverso questo articolo: link . L'opzione 1 e parte dell'opzione 2 parlano di avere un oggetto di trasferimento dati per query e oggetti dominio per i comandi.
Supponiamo di avere un oggetto dominio come questo:
public class Order
{
//Fields and properties for Order go here
public List<OrderItem> OrderItems;
//Methods for order go here.
}
Che aspetto avrebbero i DTO?
Opzione 1
Il DTO sembra identico all'oggetto dominio come questo:
public class OrderDTO
{
//Fields and properties for Order go here
public List<OrderItemDTO> OrderItems;
//Methods for order go here.
}
vale a dire. un DTO verrebbe restituito al servizio dell'applicazione contenente Ordini e Ordini.
Opzione 2a
Ci sarebbe un DTO per tabella di database (si noti nell'esempio seguente che non esiste una raccolta OrderItemDTO in OrderDTO:
public class OrderDTO
{
//Fields and properties for Order go here
public List<OrderItemDTO> OrderItems;
//Methods for order go here.
}
public class OrderItemDTO
{
//Fields and properties for OrderItem go here
//Methods for OrderItem go here.
}
vale a dire. due oggetti DTO vengono restituiti al servizio dell'applicazione.
Opzione 2b
Come per l'opzione 2 tranne per il fatto che inserisco una raccolta di chiavi esterne (per OrderItemDTO nella classe Order).
Quale opzione è "migliore", ad esempio l'opzione 1 o l'opzione 2.