Udostępnij przez


Zapytania w LINQ do SQL

Zapytania LINQ to SQL definiuje się przy użyciu tej samej składni, co w LINQ. Jedyną różnicą jest to, że obiekty przywoływane w zapytaniach są mapowane na elementy w bazie danych. Aby uzyskać więcej informacji, zobacz Wprowadzenie do zapytań LINQ (C#).

LINQ to SQL tłumaczy zapytania zapisywane w równoważnych zapytaniach SQL i wysyła je do serwera na potrzeby przetwarzania. W szczególności aplikacja używa interfejsu API LINQ to SQL do żądania wykonania zapytań. Dostawca LINQ to SQL przekształca zapytanie w tekst SQL i deleguje wykonywanie do dostawcy ADO. Dostawca ADO zwraca wyniki zapytania jako DataReader. Dostawca LINQ to SQL tłumaczy wyniki ADO na IQueryable kolekcję obiektów użytkownika.

Uwaga / Notatka

Większość metod i operatorów w wbudowanych typach programu .NET Framework ma bezpośrednie tłumaczenia na język SQL. Te, których LINQ nie może przetłumaczyć, generują błędy wykonywania w czasie uruchomienia. Aby uzyskać więcej informacji, zobacz mapowanie typówSQL-CLR.

W poniższej tabeli przedstawiono podobieństwa i różnice między elementami zapytań LINQ i LINQ to SQL.

Przedmiot Zapytanie LINQ Zapytanie LINQ to SQL
Zwraca typ zmiennej lokalnej, która zawiera zapytanie (w przypadku zapytań, które zwracają sekwencje) Rodzajowy \IEnumerable Rodzajowy \IQueryable
Określanie źródła danych Używa klauzuli From (Visual Basic) lub from (C#) To samo
Filtrowanie Używa klauzuli Where/where To samo
Grupowanie Używa klauzuli Group…By/groupby To samo
Wybieranie (projektowanie) Używa klauzuli Select/select To samo
Odroczone i natychmiastowe wykonanie Zobacz Wprowadzenie do zapytań LINQ (C#) To samo
Implementowanie łączeń Używa klauzuli Join/join Może używać klauzuli Join/join , ale bardziej efektywnie używa atrybutu .AssociationAttribute Aby uzyskać więcej informacji, zobacz Querying Across Relationships (Wykonywanie zapytań między relacjami).
Zdalne i lokalne wykonywanie Aby uzyskać więcej informacji, zobacz Zdalne i lokalne wykonywanie.
Przesyłanie strumieniowe a buforowane zapytania Nie dotyczy w przypadku pamięci lokalnej

Zobacz także