Procédure : Se connecter à une base de données
Le DataContext est le conduit principal par lequel vous vous connectez à une base de données, récupérez des objets de celle-ci et soumettez des modifications. Vous utilisez le DataContext comme vous utiliseriez une SqlConnection ADO.NET. En fait, le DataContext est initialisé avec une connexion ou une chaîne de connexion que vous fournissez. Pour plus d’informations, consultez DataContext, méthodes (Concepteur O/R).
Le rôle de DataContext est de traduire vos demandes d'objets en requêtes SQL sur la base de données, puis de rassembler les objets parmi les résultats. Le DataContext active Language Integrated Query (LINQ) en implémentant le même modèle d’opérateur que les opérateurs de requête standard, tels que Where
et Select
.
Important
Il est primordial de maintenir une connexion sécurisée. Pour plus d’informations consultez Sécurité dans LINQ to SQL.
Exemple 1
Dans l'exemple suivant, le DataContext est utilisé pour se connecter à l'exemple de base de données Northwind et récupérer des lignes de clients dont la ville est Londres.
// 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
Chaque table de base de données est représentée comme une collection Table
disponible par le biais de la méthode GetTable en utilisant la classe d’entité pour l’identifier.
Exemple 2
Il est recommandé de déclarer un DataContext fortement typé au lieu de s'appuyer sur la classe DataContext de base et sur la méthode GetTable. Un DataContext fortement typé déclare toutes les collections Table
comme membres du contexte, comme dans l'exemple suivant.
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
Vous pouvez exprimer ensuite plus simplement la requête de clients de Londres comme suit :
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