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