Włączenie źródła danych dla kwerend LINQ

Istnieją różne sposoby rozszerzania LINQ umożliwiające dowolnego źródła danych, której powinna dotyczyć kwerenda w LINQ wzoru.Źródło danych może być struktury danych, usługi sieci Web, system plików lub bazy danych, niektóre nazwy.LINQ Wzoru ułatwia klientom kwerendy źródła danych, dla którego LINQ kwerenda jest włączony, ponieważ składnia i deseń kwerendy nie zmienia.Sposoby, w którym LINQ może zostać przedłużony do tych danych źródła obejmują następujące:

  • Wykonawczych IEnumerable<T> interfejsu w polu Typ, aby umożliwić LINQ do obiektów podczas badania tego typu.

  • Tworzenie kwerendy standardowe metody operator takich jak Where i Select , rozszerzenie typu, aby włączyć niestandardowe LINQ podczas badania tego typu.

  • Tworzenie dostawcy źródła danych, który implementuje IQueryable<T> interfejsu.Dostawca, który implementuje ten interfejs odbiera LINQ kwerendy w formie drzewa wyrażenie, które go można wykonywać w sposób niestandardowy, na przykład zdalnie.

  • Tworzenie dostawcy źródła danych, który wykorzystuje istniejące LINQ technologii.Takiego dostawcy umożliwiłoby aktualizacji nie tylko podczas badania, ale również Wstawianie oraz operacje usuwania i mapowania typów zdefiniowanych przez użytkownika.

W tym temacie omówiono te opcje.

Jak włączyć zapytań LINQ źródła danych

Bb882640.collapse_all(pl-pl,VS.110).gifDane w pamięci

Istnieją dwa sposoby, można włączyć LINQ wyszukiwanie danych w pamięci.Jeśli dane typu, który implementuje IEnumerable<T>, dane można zbadać za pomocą LINQ do obiektów.Jeśli go nie ma sensu Aby włączyć wyliczanie tego typu przy realizacji IEnumerable<T> interfejsu, można zdefiniować LINQ standardowych metod operatora w tego typu kwerendy lub utworzyć LINQ metody operator kwerendy standardowe rozszerzenie typu.Niestandardowych implementacjach operatorów standardowej kwerendy należy użyć odroczonego wykonanie do zwracania wyników.

Bb882640.collapse_all(pl-pl,VS.110).gifDane zdalne

Najlepsza opcja w przypadku włączania LINQ podczas badania źródła danych zdalnych jest zaimplementowanie IQueryable<T> interfejsu.Jednak ta różni się od rozszerzenia dostawcy, takie jak LINQ to SQL dla źródła danych.Nie modeli dostawcy do rozszerzania istniejącej LINQ technologie, takie jak LINQ to SQL, do innych typów danych źródłowych są dostępne w Visual Studio 2008.

IQueryable LINQ dostawców

LINQdostawcy, które implementują IQueryable<T> może znacznie się różnią w ich złożoność.W tej sekcji omówiono różne poziomy złożoności.

Mniej skomplikowane IQueryable dostawca może łączyć się z jednej metody usługi sieci Web.Ten typ dostawcy jest bardzo specyficzne, ponieważ oczekuje, że informacje określone w kwerendach, które obsługuje.Posiada systemu zamkniętego typu, prawdopodobnie narażania typu pojedynczy wynik.Większość wykonanie kwerendy występuje lokalnie, na przykład przy użyciu Enumerable implementacje operatorów standardowej kwerendy.Mniej złożona dostawca może zbadać tylko jedną metodę wyrażenie wywołania w drzewie wyrażenia, która reprezentuje kwerendę i let pozostałych logiki kwerendy odbywać się gdzie indziej.

IQueryable Dostawcy średniej złożoności może docelowe źródła danych, który został częściowo wyrazisty query language.Jeśli to jest przeznaczony dla usługi sieci Web, może łączyć się z więcej niż jedną metodę usługi sieci Web i wybierz metodę wywołać oparte na pytanie, które stwarza kwerendy.Dostawca średniej złożoności miałoby bogatszy system typów niż dostawca proste, ale nadal byłoby system typu środków.Na przykład usługodawca może narazić typów, które mają relacji jeden do wielu, które mogą być przechodni, ale nie zapewnia technologia mapowania dla typów zdefiniowanych przez użytkownika.

Kompleks IQueryable dostawcy, takie jak LINQ to SQL dostawcy, może tłumaczyć pełne LINQ kwerendy do języka kwerend wyrazisty, takie jak SQL. Dostawca złożonych jest bardziej ogólne niż dostawca mniej złożona, ponieważ on może obsłużyć szerszej gamy pytania w kwerendzie.On również posiada system typu open i dlatego musi zawierać rozległe infrastruktury do mapowania typów zdefiniowanych przez użytkownika.Rozwój złożonych dostawca wymaga dużego nakładu pracy.

Aby uzyskać więcej informacji na temat tworzenia dostawcą LINQ, zobacz Instruktaż: Tworzenie dostawcą IQueryable LINQ tematu i LINQ: budowanie dostawcą IQueryable i łącze, aby wszystko: lista dostawców LINQ ogłoszenia w blogach MSDN.

Zobacz też

Zadania

Instruktaż: Tworzenie dostawcą IQueryable LINQ

Informacje

IQueryable<T>

IEnumerable<T>

Enumerable

Koncepcje

Omówienie operatory kwerendy standardowe

LINQ do obiektów

Inne zasoby

LINQ: Budowanie dostawcą IQueryable

łącze, aby wszystko: lista dostawców LINQ