Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa

Darmowa diagnoza laptopa

Dojazd do klienta bezpłatnie

Dojazd do klienta bezpłatnie

Laptopy zastępcze bezpłatnie

Laptopy zastępcze bezpłatnie

Odbiór i zwrot sprzętu bezpłatnie

Odbiór i zwrot sprzętu bezpłatnie

API LINQ to SQL

Termin Definicja
API LINQ to SQL

API LINQ to SQL to technologia Microsoft umożliwiająca wyrażanie zapytań do bazy danych bezpośrednio w składni języka C#.

Model obiektowy i zapytania LINQ

LINQ to SQL jest technologią dostępu do danych w środowisku .NET Framework, która pozwala tworzyć zapytania do relacyjnej bazy danych przy użyciu składni języka C#. Zamiast budować każde zapytanie jako osobny tekst SQL, programista może operować na obiektach, kolekcjach i właściwościach klas. Kompilator oraz mechanizm LINQ analizują wyrażenie, a warstwa LINQ to SQL tłumaczy je na zapytanie SQL wykonywane przez serwer bazy danych. Samo API nie jest odrębnym silnikiem bazy danych ani nowym językiem zapytań zastępującym SQL.

Technologia opiera się na mapowaniu obiektowo-relacyjnym, czyli powiązaniu klas C# z tabelami, właściwości klas z kolumnami oraz relacji między obiektami z relacjami między tabelami. Najczęściej używaną klasą infrastruktury jest DataContext. Reprezentuje ona sesję pracy z bazą danych, udostępnia właściwości opisujące tabele i odpowiada za wykonanie zapytań, śledzenie zmian oraz wysyłanie modyfikacji do bazy. Dzięki temu kod aplikacji może odwoływać się do modelu domenowego, choć wynik końcowy nadal jest realizowany przez instrukcje SQL.

DataContext, mapowanie tabel i plik DBML

Model LINQ to SQL może być zapisany w pliku DBML, czyli pliku opisującym mapowanie między strukturą bazy danych a klasami używanymi w programie. Na podstawie takiego opisu narzędzia projektowe mogą wygenerować klasy encji oraz klasę dziedziczącą po DataContext. Alternatywnie mapowanie można przygotować w kodzie za pomocą atrybutów, takich jak Table, Column, Association i Database. Atrybuty określają między innymi nazwę tabeli, nazwę kolumny, klucz główny, możliwość generowania wartości oraz powiązania między encjami.

Przykładowe zapytanie LINQ może filtrować rekordy, sortować je i wybierać tylko potrzebne pola. Jeżeli właściwość Products reprezentuje tabelę, wyrażenie z metodą Where może opisać warunek odpowiadający klauzuli WHERE, a OrderBy może zostać przetłumaczone na ORDER BY. W praktyce znaczenie ma to, czy dana operacja może zostać przetłumaczona na SQL. Operacje wykonywane dopiero po pobraniu danych, na przykład część metod specyficznych dla kodu C#, nie są równoważne operacjom wykonywanym po stronie serwera i mogą wymagać wcześniejszego materializowania wyników.

Wykonanie zapytania i obsługa zmian

Zapytania LINQ to SQL są zwykle wykonywane z opóźnieniem. Utworzenie obiektu zapytania nie musi od razu powodować komunikacji z bazą. Zapytanie jest wykonywane dopiero wtedy, gdy program zacznie iterować po wyniku albo wywoła metodę materializującą, na przykład ToList, ToArray lub Single. Mechanizm ten pozwala budować zapytanie etapami, lecz może też powodować niezamierzone wielokrotne odwołania do bazy, jeśli ten sam obiekt zapytania jest enumerowany więcej niż raz.

DataContext śledzi obiekty pobrane i zmodyfikowane podczas sesji. Dodanie nowej encji odbywa się przez InsertOnSubmit, usunięcie przez DeleteOnSubmit, a zapis oczekujących zmian przez SubmitChanges. W czasie zapisu LINQ to SQL generuje odpowiednie instrukcje INSERT, UPDATE albo DELETE. Dla aktualizacji może zostać użyta kontrola współbieżności oparta na wartościach odczytanych wcześniej, dzięki czemu aplikacja może wykryć sytuację, w której inny proces zmienił ten sam rekord. Błędy połączenia, niezgodność mapowania, naruszenie ograniczeń bazy lub konflikt współbieżności wymagają osobnej obsługi wyjątków.

Zakres zastosowania i znaczenie poprawnej konfiguracji

LINQ to SQL jest rozwiązaniem ukierunkowanym na relacyjną bazę Microsoft SQL Server i aplikacje oparte na .NET Framework. Nie należy utożsamiać go z Entity Framework, mimo że oba rozwiązania wykorzystują mapowanie obiektowo-relacyjne oraz składnię LINQ. Mają inne modele konfiguracji, inne możliwości i odrębne klasy API. Kod używający DataContext oraz klas z przestrzeni nazw System.Data.Linq wymaga zachowania właściwych referencji oraz zgodności wersji środowiska uruchomieniowego.

Podczas analizy problemu z aplikacją korzystającą z LINQ to SQL należy sprawdzić między innymi łańcuch połączenia, dostępność właściwej bazy, zgodność nazw tabel i kolumn z mapowaniem DBML, typy danych kluczy oraz sposób ładowania powiązanych rekordów. Istotne jest także odróżnienie błędu warstwy aplikacji od błędu serwera SQL. Warszawskie Pogotowie Komputerowe zajmuje się profesjonalną naprawą laptopów i komputerów PC oraz diagnostyką ich podzespołów, natomiast działanie samego API LINQ to SQL należy oceniać w kontekście kodu aplikacji, konfiguracji .NET Framework i połączenia z bazą danych.

+48 22 100 48 29Zadzwoń teraz · serwisant w 1 godzinę