Delen via


Procedure: Verbinding maken naar een database

Dit DataContext is het belangrijkste conduit waarmee u verbinding maakt met een database, objecten ervan ophaalt en wijzigingen naar de database verzendt. U gebruikt de DataContext net zoals u een ADO.NET SqlConnectionzou gebruiken. In feite wordt het DataContext geïnitialiseerd met een verbinding of verbindingsreeks die u opgeeft. Zie DataContext Methods (O/R Designer) voor meer informatie.

Het doel van het DataContext is om uw aanvragen voor objecten te vertalen naar SQL-query's die moeten worden uitgevoerd op basis van de database en vervolgens objecten uit de resultaten samen te stellen. Hiermee DataContext schakelt u Language-Integrated Query (LINQ) in door hetzelfde operatorpatroon te implementeren als de Standard-queryoperators, zoals Where en Select.

Belangrijk

Het onderhouden van een beveiligde verbinding is van het hoogste belang. Zie Beveiliging in LINQ naar SQL voor meer informatie.

Voorbeeld 1

In het volgende voorbeeld wordt het DataContext gebruikt om verbinding te maken met de voorbeelddatabase Northwind en om rijen op te halen van klanten van wie de stad Londen is.

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

Elke databasetabel wordt weergegeven als een Table verzameling die beschikbaar is via de GetTable methode, door de entiteitsklasse te gebruiken om deze te identificeren.

Voorbeeld 2

Best practice is om een sterk getypte DataContext methode te declareren in plaats van te vertrouwen op de basisklasse DataContext en de GetTable methode. Een sterk getypte DataContext declareert alle Table verzamelingen als leden van de context, zoals in het volgende voorbeeld.

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

Vervolgens kunt u de query voor klanten uit Londen uitdrukken als:

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

Zie ook