In primo luogo, scusa per una lunga domanda, ma devo fornire alcune informazioni di base.Modello DTO + Caricamento pigro + Entity Framework + ASP.Net MVC + Auto Mapper
Stiamo creando un'applicazione che utilizza ASP.net MVC, Modelli JQuery, Entity Framework, WCF e abbiamo utilizzato POCO come livello del dominio. Nella nostra applicazione, c'è un livello di servizi WCF per lo scambio di dati con l'applicazione ASPC MVC e utilizza gli oggetti di trasferimento dati (DTO) da WCF a MVC.
Inoltre, l'applicazione utilizza il caricamento lento in Entity Framework utilizzando AutoMapper durante la conversione di domini in DTO nel nostro livello di servizio WCF.
nostro backend Architettura come segue (WCF Services -> I gestori -> Repository -> Entity Framework (POCO))
Nella nostra applicazione, non usiamo Visualizza i modelli come noi non vogliamo un altro livello di mappatura per l'applicazione MVC e utilizziamo solo DTO come modelli di vista.
Generalmente, disponiamo di DTO normali e Lite per domini come Customer, CustomerLite, ecc. (L'oggetto Lite ha poche proprietà rispetto a Normal).
Ora abbiamo delle difficoltà con gli DTO perché la nostra struttura DTO sta diventando più complessa e quando pensiamo alla manutenibilità (con struttura gerarchica generale di DTO) perdiamo prestazioni.
Per esempio,
Abbiamo Clienti Visualizza pagina e la nostra gerarchia DTO come segue
public class CustomerViewDetailsDTO
{
public CustomerLiteDto Customer{get;set;}
public OrderLiteDto Order{get;set;}
public AddressLiteDto Address{get;set;}
}
In questo caso non vogliamo alcuni campi di OrderLiteDto per questo punto di vista. Ma qualche altra visione ha bisogno di quei campi, così per facilitare che usiamo quella struttura.
Quando si tratta di Auto Mapping, mappiamo CustomerViewDetailsDTO e otterremo dati aggiuntivi (che non è richiesto per una vista particolare) da Lazy Loading (Entity Framework).
Le mie domande:
Esiste un meccanismo che possiamo utilizzare per migliorare le prestazioni, mentre considerando la manutenibilità?
È possibile utilizzare Automapper con più funzioni di mapping basate sulla visualizzazione della mappa per lo stesso DTO?
Lunga? Vorrei che ogni domanda fosse questa breve :) –