Udostępnij za pośrednictwem


LINQ i ADO.NET

Obecnie wielu deweloperów biznesowych musi używać dwóch (lub więcej) języków programowania: języka wysokiego poziomu dla warstw logiki biznesowej i prezentacji (takich jak Visual C# lub Visual Basic) oraz języka zapytań do interakcji z bazą danych (np. Języka Transact-SQL). Wymaga to, aby deweloper był biegły w kilku językach, aby był skuteczny, a także powoduje niezgodność języka w środowisku dewelopera. Na przykład aplikacja, która używa interfejsu API dostępu do danych do wykonywania zapytania względem bazy danych, określa zapytanie jako literał ciągu przy użyciu cudzysłowów. Ten ciąg zapytania jest nieczytelny dla kompilatora i nie jest sprawdzany pod kątem błędów, takich jak nieprawidłowa składnia lub czy kolumny lub wiersze, do których się odwołuje. Nie ma sprawdzania typów parametrów zapytania i nie ma IntelliSense żadnej obsługi.

Zapytanie zintegrowane z językiem (LINQ) umożliwia deweloperom tworzenie zapytań opartych na zestawie w kodzie aplikacji bez konieczności używania oddzielnego języka zapytań. Zapytania LINQ można zapisywać w różnych wyliczalnych źródłach danych (czyli źródle danych, które implementuje IEnumerable interfejs), takie jak struktury danych w pamięci, dokumenty XML, bazy danych SQL i DataSet obiekty. Mimo że te wyliczalne źródła danych są implementowane na różne sposoby, wszystkie uwidaczniają tę samą składnię i konstrukcje języka. Ponieważ zapytania mogą być tworzone w samym języku programowania, nie trzeba używać innego języka zapytań osadzonego jako literałów ciągu, których nie można zrozumieć ani zweryfikować przez kompilator. Integrowanie zapytań z językiem programowania umożliwia również programistom programu Visual Studio zwiększenie produktywności dzięki zapewnieniu kompilowania typu czasu i sprawdzania składni oraz IntelliSense. Te funkcje zmniejszają potrzebę debugowania zapytań i naprawiania błędów.

Transferowanie danych z tabel SQL do obiektów w pamięci jest często żmudne i podatne na błędy. Dostawca LINQ zaimplementowany przez LINQ to DataSet i LINQ to SQL konwertuje dane źródłowe na kolekcje obiektów opartych na IEnumerablemodelu . Programista zawsze wyświetla dane jako IEnumerable kolekcję, zarówno podczas wykonywania zapytań, jak i podczas aktualizowania. Pełna IntelliSense obsługa jest dostępna do pisania zapytań względem tych kolekcji.

Istnieją trzy oddzielne technologie zapytań ADO.NET języka zintegrowanego (LINQ): LINQ to DataSet, LINQ to SQL i LINQ to Entities. LinQ to DataSet zapewnia bogatsze, zoptymalizowane zapytania względem DataSet i LINQ to SQL umożliwiają bezpośrednie wykonywanie zapytań względem schematów bazy danych programu SQL Server, a funkcja LINQ to Entities umożliwia wykonywanie zapytań względem modelu danych jednostki.

Poniższy diagram zawiera omówienie sposobu, w jaki technologie LINQ ADO.NET odnoszą się do języków programowania wysokiego poziomu i źródeł danych z obsługą LINQ.

LINQ to ADO.NET overview

Aby uzyskać więcej informacji na temat LINQ, zobacz Language Integrated Query (LINQ).

Poniższe sekcje zawierają więcej informacji na temat linQ to DataSet, LINQ to SQL i LINQ to Entities.

LINQ to DataSet

Jest DataSet to kluczowy element odłączonego modelu programowania, który jest oparty na ADO.NET i jest powszechnie używany. LinQ to DataSet umożliwia deweloperom tworzenie bogatszych DataSet możliwości zapytań przy użyciu tego samego mechanizmu formułowania zapytań, który jest dostępny dla wielu innych źródeł danych. Aby uzyskać więcej informacji, zobacz LINQ to DataSet.

LINQ to SQL

LINQ to SQL to przydatne narzędzie dla deweloperów, którzy nie wymagają mapowania na model koncepcyjny. Korzystając z linQ to SQL, można użyć modelu programowania LINQ bezpośrednio za pośrednictwem istniejącego schematu bazy danych. LINQ to SQL umożliwia deweloperom generowanie klas programu .NET Framework reprezentujących dane. Zamiast mapować na koncepcyjny model danych, te wygenerowane klasy są mapowane bezpośrednio na tabele bazy danych, widoki, procedury składowane i funkcje zdefiniowane przez użytkownika.

Dzięki linQ to SQL deweloperzy mogą pisać kod bezpośrednio względem schematu magazynu przy użyciu tego samego wzorca programowania LINQ co kolekcje w pamięci i DataSet, oprócz innych źródeł danych, takich jak XML. Aby uzyskać więcej informacji, zobacz LINQ to SQL.

LINQ to Entities

Większość aplikacji jest obecnie zapisywana na podstawie relacyjnych baz danych. W pewnym momencie te aplikacje będą musiały wchodzić w interakcje z danymi reprezentowanymi w formie relacyjnej. Schematy baz danych nie zawsze są idealne do tworzenia aplikacji, a koncepcyjne modele aplikacji nie są takie same jak modele logiczne baz danych. Model danych jednostki to koncepcyjny model danych, który może służyć do modelowania danych określonej domeny, dzięki czemu aplikacje mogą wchodzić w interakcje z danymi jako obiektami. Aby uzyskać więcej informacji, zobacz ADO.NET Entity Framework.

Za pomocą modelu danych jednostki dane relacyjne są udostępniane jako obiekty w środowisku .NET. Dzięki temu warstwa obiektu jest idealnym celem obsługi LINQ, umożliwiając deweloperom formułowanie zapytań względem bazy danych z języka używanego do tworzenia logiki biznesowej. Ta funkcja jest znana jako LINQ to Entities. Aby uzyskać więcej informacji, zobacz LINQ to Entities (LinQ to Entities).

Zobacz też