Freigeben über


Vorgehensweise: Herstellen einer Verbindung mit einer Datenbank

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 genau wie eine SqlConnection in ADO.NET. 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 LINQ (Language Integrated Query) durch die Implementierung desselben Operatormusters wie bei den Standardabfrageoperatoren, z. B. Where und Select.

Wichtig

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

Beispiel 1

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.
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

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

Beispiel 2

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.

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

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

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

Siehe auch