Ответ 1
Сначала не используйте Lazy Loading, так как, вероятно, это приведет к выбору проблем N + 1 или тому подобное.
Выбор N + 1 - это анти-шаблон доступа к данным, в котором база данных доступ к нему неоптимальным способом.
Другими словами, использование ленивой загрузки без загрузочных коллекций заставляет Entity Framework идти в базу данных и возвращать результаты назад по одной строке за раз.
Используйте jsRender для шаблонов, поскольку он намного быстрее, чем шаблоны JQuery: Render Bemchmark и здесь хорошая информация о том, как его использовать: Уменьшение кода JavaScript Использование шаблонов jsRender в приложениях HTML5
Как правило, у нас есть нормальные и Lite DTO для домена, такие как Customer, CustomerLite и т.д. (Объект Lite имеет несколько свойств, чем Normal).
Ваша нормальная DTO, вероятно, является ViewModel, поскольку ViewModels могут или не могут сопоставлять один-на-один с DTO, а ViewModels часто содержат логику, оттолкнутую назад от представления, или помогают с возвратом данных обратно в Модель при ответе пользователя. DTO не имеют никакого поведения, и их целью является уменьшение количества вызовов между уровнями приложения.
Есть ли какой-либо механизм, который мы можем использовать для повышения производительности при рассмотрении ремонтопригодности?
Используйте один ViewModel для одного вида, и вам не придется беспокоиться о ремонтопригодности. Лично я обычно создаю класс abtract, который является базой, и для редактирования создайте или перечислите i, наследуйте этот класс и добавляйте свойства, специфичные для представления. Таким образом, для примера Create view не требуется PropertyId (поскольку кто-то может захватить ваше сообщение и опубликовать его), так что только объекты Edit и List ViewModels имеют свойство PropertyId.
Можно ли использовать Automapper с другими функциями отображения на основе карты для того же DTO?
Вы можете использовать AutoMapper для определения каждой карты, но вопрос в том, насколько сложна карта. Используя один ViewModel для каждого вида, и ваши карты будут просты в написании и обслуживании. Я должен указать, что не рекомендуется использовать Automapper в коде доступа к данным как:
Один недостаток AutoMapper заключается в том, что проекция из объектов домена все еще заставляет весь объект домена запрашиваться и загружаться.
Источник: Автопроектирование запросов LINQ
Вы можете использовать набор расширений, которые ограничены на данный момент, чтобы ускорить ваше сопоставление в коде доступа к данным: Прекратить использование AutoMapper в вашем коде доступа к данным
Привет