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