Dotazy LINQ to SQL
Dotazy LINQ to SQL definujete pomocí stejné syntaxe jako v LINQ. Jediným rozdílem je, že objekty odkazované v dotazech jsou mapovány na prvky v databázi. Další informace najdete v tématu Úvod k dotazům LINQ (C#).
LINQ to SQL přeloží dotazy, které zapíšete do ekvivalentních dotazů SQL, a odešle je na server pro zpracování. Konkrétněji vaše aplikace k vyžádání provádění dotazů používá rozhraní LINQ to SQL API. Zprostředkovatel LINQ to SQL pak transformuje dotaz na text SQL a deleguje provádění na zprostředkovatele ADO. Zprostředkovatel ADO vrátí výsledky dotazu jako DataReader
. Zprostředkovatel LINQ to SQL přeloží výsledky ADO do IQueryable kolekce uživatelských objektů.
Poznámka:
Většina metod a operátorů v předdefinovaných typech rozhraní .NET Framework má přímé překlady do SQL. Ty, které LINQ nemohou přeložit vygenerované výjimky za běhu. Další informace naleznete v tématu SQL-CLR Type Mapping.
Následující tabulka ukazuje podobnosti a rozdíly mezi položkami dotazů LINQ a LINQ to SQL.
Položka | Dotaz LINQ | Dotaz LINQ to SQL |
---|---|---|
Návratový typ místní proměnné, která obsahuje dotaz (pro dotazy, které vracejí sekvence) | Obecné IEnumerable |
Obecné IQueryable |
Určení zdroje dat | Používá klauzuli From (Visual Basic) nebo from (C#). |
Stejné |
Filtrování | Použije klauzuli Where /where . |
Stejné |
Seskupení | Použije klauzuli Group…By /groupby . |
Stejné |
Výběr (promítání) | Použije klauzuli Select /select . |
Stejné |
Odložené a okamžité spuštění | Viz Úvod k dotazům LINQ (C#) | Stejné |
Implementace spojení | Použije klauzuli Join /join . |
Klauzuli Join /join lze použít, ale efektivněji používá AssociationAttribute atribut. Další informace najdete v tématu Dotazování mezi relacemi. |
Vzdálené a místní spouštění | Další informace naleznete v tématu Vzdálené a místní spuštění. | |
Streamování a dotazování v mezipaměti | Nejde použít ve scénáři místní paměti |