Как стремиться загрузить всю таблицу SQL в LINQ? - PullRequest
2 голосов
/ 16 января 2009

Пишу свое первое приложение Linq, и я пытаюсь найти лучший способ сделать следующее:

Я хочу загрузить всю таблицу сотрудников за один раз, чтобы заполнить кэш (используется для автозаполнения формы).

Я могу сделать -

var query = from employee in db.Employees select employee;
foreach (Employee e in query)
{
    ...
}

Но поскольку это отложенная загрузка, генерируется один запрос на сотрудника. Как я могу загрузить всю таблицу?

Я изучил DataLoadOptions, но, похоже, это работает только для отношений.

1 Ответ

3 голосов
/ 16 января 2009
var query = db.Employees.ToList();

Кстати, это эквивалентно:

var query = (from employee in db.Employees select employee).ToList();

Нет причин заставлять себя использовать синтаксис операторов запросов, когда лямбда-синтаксис имеет больше смысла и короче.

Примечание 1 : тип объекта query будет List<Employee>, однако нет никакой разницы в терминах сгенерированного IL и производительности, если мы явно его указали.

Примечание 2 : Важно знать, что запрос, указанный в вопросе , является , а не , выполняемый один раз для сотрудника . Он выполняется только один раз и выбирается один за другим из базы данных (аналогично объекту SqlDataReader, выполняющему запрос SELECT * FROM Employees). Однако ToList() загружает все строки в списке, и дальнейшие запросы к этому объекту выполняются в самом приложении, а не в SQL Server.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...