Стремление загружать детей для вызова хранимой процедуры LINQ - PullRequest
0 голосов
/ 23 сентября 2010

У меня есть специальная хранимая процедура, которая возвращает список распространителей из моей базы данных. Затем я повторяю цикл «Дистрибьюторы» и вывожу результаты на веб-страницу. Однако мне нужно загрузить штат и страну для каждого дистрибьютора. Я бы предпочел сделать это один раз, до цикла, чтобы страница была быстрее. Это мой код:

List<Distributor> distQuery =  connection.spDistFindLocal(Lat, Long).ToList<Distributor>();

Я знаю, что могу сделать distributor.State.Load(); для каждого элемента в моем Списке, но я думаю, что это плохой выбор. Какие еще варианты у меня есть?

1 Ответ

1 голос
/ 23 сентября 2010

Используйте проекцию:

List<DistributorViewModel> distQuery =  
    (from d in connection.spDistFindLocal(Lat, Long)
     select new DistributorViewModel
     {
         Name = d.Name,
         State = d.State.Name,
         Country = d.Country.Name
     })ToList();

Это не только загружает все данные в одном запросе, но и не загружает свойства, которые вам не нужны для этого представления.

...