DTO Pattern + Ленивая загрузка + Entity Framework + ASP.Net MVC + Auto Mapper
Во-первых, извините за длинный вопрос, но я должен дать некоторую основную информацию.
Мы создаем приложение, которое использует ASP.net MVC, JQuery Templates, Entity Framework, WCF, и мы использовали POCO в качестве нашего уровня домена. В нашем приложении есть сервисный уровень WCF для обмена данными с приложением ASP.net MVC, и он использует объекты передачи данных (DTO) из WCF в MVC.
Кроме того, приложение использует отложенную загрузку в Entity Framework с использованием AutoMapper при преобразовании Domain-TO-DTO в нашем сервисном уровне WCF.
Наша архитектура бэкэнда выглядит следующим образом WCF Services -> Managers -> Repository -> Entity Framework (POCO))
В нашем приложении мы не используем модели представления, поскольку нам не нужен еще один слой отображения для приложения MVC, и мы используем только DTO в качестве моделей представления.
В общем, у нас есть обычные и облегченные DTO для таких доменов, как Customer, CustomerLite и т. Д. объекта @Lite меньше свойств, чем у Normal).
Теперь у нас возникают некоторые трудности с DTO, потому что наша структура DTO становится все более сложной, и когда мы думаем о возможности сопровождения (с общей иерархической структурой DTO), мы теряем производительность.
Например
У нас есть страница просмотра клиентов и наша иерархия DTO следующим образом:
public class CustomerViewDetailsDTO
{
public CustomerLiteDto Customer{get;set;}
public OrderLiteDto Order{get;set;}
public AddressLiteDto Address{get;set;}
}
В этом случае нам не нужны некоторые поля OrderLiteDto для этого представления. Но некоторые другие представления нуждаются в этих полях, поэтому для облегчения этого мы используем эту структуру.
Когда дело доходит до автоматического сопоставления, мы сопоставляем CustomerViewDetailsDTO, и мы получим дополнительные данные (которые не требуются для конкретного представления) из Lazy Loading (Entity Framework).
Мои вопросы
Есть ли какой-нибудь механизм, который мы можем использовать для повышения производительности при рассмотрении ремонтопригодности?
Можно ли использовать Automapper с большим количеством функций отображения на основе вида карты для того же DTO?