Как использовать ленивую загрузку с моделями просмотра

Я создаю приложение MVC ASP.Net и имею большой список данных, которые мне нужно отобразить в таблице, однако не все данные находятся в одной таблице моей базы данных. Из-за этого я создал модель представления, чтобы получить все необходимые данные и поместить их в одно место для своего представления. Это отлично работало до недавнего времени, когда я начал получать большие объемы данных. Теперь процесс переноса всех данных из моделей в модель представления занимает слишком много времени. Традиционно я бы использовал ленивую загрузку, чтобы сократить это время, но не знаю, как это сделать с моделью представления. Это вообще возможно?

Если есть какой-либо код, который вам нужен, сообщите мне, но я не уверен, какой код будет необходим прямо сейчас.


person Jon    schedule 20.12.2015    source источник
comment
Взгляните на это   -  person Shyju    schedule 20.12.2015
comment
@Shyju хороший ответ по вашей ссылке. Я дал ему голос. Что касается ленивой загрузки из модели представления, вам не нужно делать ничего лишнего, кроме обычного. Просто убедитесь, что ваши свойства навигации являются виртуальными, и убедитесь, что в вашем классе конфигурации включена ленивая загрузка (она уже включена по умолчанию).   -  person mrsargent    schedule 20.12.2015
comment
В этом посте объясняется, как работает отложенное выполнение и как оно влияет на производительность (когда у вас есть свойства навигации, которые исходят из других таблиц), а также решение для решения этой проблемы (используя dtos и проекцию).   -  person Shyju    schedule 20.12.2015


Ответы (1)


Из другого опубликованного ответа решение, по-видимому, для вашей базы данных:

  var.Resource.Include(s=>s.someResource);

Include() применяет активную загрузку. Упреждающая загрузка — это процесс, при котором запрос для объекта одного типа также загружает связанные объекты как часть запроса. Это ускорит его, поэтому вы не будете делать много запросов.

person Pipeline    schedule 20.12.2015