Сравнение на отдалечени срещу локални заявки (LINQ към SQL), Microsoft Docs

Заявките могат да се изпълняват отдалечено (т.е. машината на базата данни изпълнява заявката спрямо базата данни) или локално (т.е. LINQ to SQL изпълнява заявката срещу локалния кеш).

Дистанционно изпълнение

Разгледайте следното запитване:

Ако базата данни съдържа хиляди редове за поръчки, не е необходимо да се извличат всички редове, за да се обработи малко подмножество. В LINQ към SQL класът EntitySet имплементира интерфейса IQueryable. Този метод гарантира дистанционно изпълнение на такива заявки. Този метод предоставя на потребителя две значителни предимства.

Извличат се само необходимите данни.

Заявките, извършвани от машината на базата данни, често са по-ефективни поради индексите на базата данни.

Локално изпълнение

В други случаи може да е необходимо да имате пълния набор от свързани записи в локалния кеш. За тази цел класът EntitySet предоставя метод Load за изрично зареждане на всички членове на класа EntitySet.

Ако класът EntitySet вече е зареден, следващите заявки се изпълняват локално. Този метод е полезен от две гледни точки.

Ако пълният набор трябва да се използва локално или многократно, отдалечените заявки и свързаните с тях забавяния могат да бъдат избегнати.

Един обект може да бъде сериализиран като пълен обект.

Следният кодов фрагмент показва как да постигнете локално изпълнение.

Тези две възможности предоставят мощна комбинация от опции: изпълнение от разстояние за големи колекции и изпълнение локално за малки колекции или когато е необходима цялата колекция. Отдалеченото изпълнение се реализира с помощта на интерфейса IQueryable, докато локалното изпълнение се реализира с помощта на IEnumerable колекция в паметта. Инструкцииза локално прилагане (т.е. използване на IEnumerable колекция), вижте Как да: Конвертирате тип в общ IEnumerable интерфейс (LINQ към SQL).

Заявки за неподредени набори

Обърнете внимание на важна разлика между локална колекция, която имплементира метода List и колекция, която предоставя отдалечено запитване на неподредени набори в релационна база данни. Списъчните методи, като например при използване на индексни стойности, изискват семантика на списъка, която обикновено не се изпълнява чрез отдалечена заявка за неподреден набор. Поради тази причина методи като този имплицитно зареждат класа EntitySet, за да могат да се изпълняват локално.