Udostępnij za pośrednictwem


Instrukcje: Łączenie z bazą danych

Jest DataContext to główny kanał, za pomocą którego łączysz się z bazą danych, pobierasz z niej obiekty i przesyłasz zmiany z powrotem do niej. Używasz DataContext elementu tak samo, jak w przypadku ADO.NET SqlConnection. W rzeczywistości DataContext element jest inicjowany za pomocą połączenia lub parametry połączenia, które podajesz. Aby uzyskać więcej informacji, zobacz Metody DataContext (O/R Projektant).

Celem obiektu DataContext jest tłumaczenie żądań dla obiektów na zapytania SQL, które mają być wykonywane względem bazy danych, a następnie w celu zebrania obiektów z wyników. Funkcja DataContext umożliwia korzystanie z zapytania zintegrowanego z językiem (LINQ) przez zaimplementowanie tego samego wzorca operatora co standardowe operatory zapytań, takie jak Where i Select.

Ważne

Utrzymywanie bezpiecznego połączenia ma największe znaczenie. Aby uzyskać więcej informacji, zobacz Zabezpieczenia w linQ to SQL.

Przykład 1

W poniższym przykładzie DataContext parametr jest używany do nawiązywania połączenia z przykładową bazą danych Northwind i pobierania wierszy klientów, których miasto jest Londynem.

// DataContext takes a connection string.
DataContext db = new DataContext(@"c:\Northwind.mdf");

// Get a typed table to run queries.
Table<Customer> Customers = db.GetTable<Customer>();

// Query for customers from London.
var query =
    from cust in Customers
    where cust.City == "London"
    select cust;

foreach (var cust in query)
    Console.WriteLine("id = {0}, City = {1}", cust.CustomerID, cust.City);
' DataContext takes a connection string.
Dim db As New DataContext("…\Northwind.mdf")

' Get a typed table to run queries.
Dim Customers As Table(Of Customer) = db.GetTable(Of Customer)()

' Query for customer from London.
Dim Query = _
    From cust In Customers _
    Where cust.City = "London" _
    Select cust

For Each cust In Query
    Console.WriteLine("id=" & cust.CustomerID & _
        ", City=" & cust.City)
Next

Każda tabela bazy danych jest reprezentowana jako Table kolekcja dostępna za pomocą GetTable metody , używając klasy jednostek do jej identyfikacji.

Przykład 2

Najlepszym rozwiązaniem jest zadeklarowanie silnie typizowanego DataContext elementu zamiast polegania na klasie podstawowej DataContext i metodzie GetTable . Silnie typizowane DataContext deklaruje wszystkie Table kolekcje jako elementy członkowskie kontekstu, jak w poniższym przykładzie.

public partial class Northwind : DataContext
{
    public Table<Customer> Customers;
    public Table<Order> Orders;
    public Northwind(string connection) : base(connection) { }
}
Partial Public Class Northwind
    Inherits DataContext
    Public Customers As Table(Of Customer)
    Public Orders As Table(Of Order)
    Public Sub New(ByVal connection As String)
        MyBase.New(connection)
    End Sub
End Class

Następnie możesz wyrazić zapytanie dla klientów z Londynu w prosty sposób:

Northwnd db = new Northwnd(@"c:\Northwnd.mdf");
var query =
    from cust in db.Customers
    where cust.City == "London"
    select cust;
foreach (var cust in query)
    Console.WriteLine("id = {0}, City = {1}", cust.CustomerID,
        cust.City);
Dim db As New Northwind("...\Northwnd.mdf")

Dim query = _
    From cust In db.Customers _
    Where cust.City = "London" _
    Select cust

For Each cust In query
    Console.WriteLine("id=" & cust.CustomerID & _
        ", City=" & cust.City)
Next

Zobacz też