Gewusst wie: Herstellen einer Verbindung zu einer Datenbank (LINQ to SQL)

Aktualisiert: November 2007

Der DataContext ist die "Hauptleitung" für die Verbindung zu einer Datenbank, für das Abrufen von Objekten und für das Übergeben von Änderungen. Sie verwenden den DataContext so wie eine ADO.NET SqlConnection. Tatsächlich wird der DataContext mit einer von Ihnen angegebenen Verbindung oder Verbindungszeichenfolge initialisiert. Weitere Informationen finden Sie unter DataContext-Methoden (O/R-Designer).

Der Zweck des DataContext besteht in der Übersetzung Ihrer Objektanforderungen in SQL-Abfragen für die Datenbank und in der anschließenden Zusammenstellung von Objekten aus den Ergebnissen. Der DataContext unterstützt Sprachintegrierte Abfrage (Language-Integrated Query, LINQ) durch die Implementierung des gleichen Operatormusters wie bei den standardmäßigen Abfrageoperatoren, z. B. Where und Select.

Sicherheitshinweis:

Der Erhalt einer sicheren Verbindung ist von grundlegender Bedeutung. Weitere Informationen finden Sie unter Sicherheit in LINQ to SQL.

Beispiel

Im folgenden Beispiel wird der DataContext zum Herstellen einer Verbindung zur Beispieldatenbank Nordwind und zum Abrufen von Zeilen mit Kunden aus London verwendet.

' DataContext takes a connection string.
Dim db As New DataContext("…\Northwnd.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
// DataContext takes a connection string. 
DataContext db = new DataContext(@"c:\Northwnd.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);

Jede Datenbanktabelle wird als Table-Auflistung dargestellt, die über die GetTable-Methode zur Verfügung steht. Zur Identifikation wird hierbei die Entitätsklasse verwendet.

Die bewährte Methode besteht in der Deklaration eines starken DataContext anstelle der grundlegenden DataContext-Klasse und der GetTable-Methode. Ein starker DataContext deklariert alle Table-Auflistungen wie im folgenden Beispiel als Kontextmember.

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
public partial class Northwind : DataContext
{
    public Table<Customer> Customers;
    public Table<Order> Orders;
    public Northwind(string connection) : base(connection) { }
}

Sie können dann die Abfrage von Kunden aus London wie folgt einfacher ausdrücken:

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
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);

Siehe auch

Weitere Ressourcen

Kommunizieren mit der Datenbank (LINQ to SQL)