Langue
Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
N’utilisez pas System.Data.SqlClient pour le nouveau développement. Utilisez Microsoft. Data.SqlClient pour le nouveau code d’accès aux données SQL Server. Ces exemples conservent System.Data.SqlClient, car le fournisseur LINQ to SQL intégré de .NET Framework en a besoin. La modification du seul type de connexion ne permet pas de migrer LINQ to SQL.
Le DataContext est le canal principal par lequel vous vous connectez à une base de données, récupérez des objets à partir de celle-ci et lui envoyez des modifications. Vous utilisez le DataContext tout comme vous l’utiliseriez un ADO.NET SqlConnection. En fait, le DataContext est initialisé avec une connexion ou une chaîne de connexion que vous fournissez. Pour plus d’informations, consultez DataContext Methods (O/R Designer).
L’objectif du DataContext est de traduire vos demandes d’objets en requêtes SQL à effectuer sur la base de données, puis d’assembler des objets à partir des 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
Le maintien d’une connexion sécurisée est de la plus haute importance. 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.
// Do not use System.Data.SqlClient for new development; use Microsoft.Data.SqlClient.
// LINQ to SQL's built-in provider requires System.Data.SqlClient.
// 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);
' Do not use System.Data.SqlClient for new development; use Microsoft.Data.SqlClient.
' LINQ to SQL's built-in provider requires System.Data.SqlClient.
' 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 sous la forme d’une collection Table disponible par le biais de la méthode GetTable, à l’aide de la classe d’entité pour l’identifier.
Exemple 2
La meilleure pratique consiste à déclarer un(e) DataContext fortement typé(e) au lieu de s’appuyer sur la classe de base DataContext et la méthode GetTable. Un type fortement typé DataContext déclare toutes les Table collections en tant que membres du contexte, comme dans l’exemple suivant.
// Do not use System.Data.SqlClient for new development; use Microsoft.Data.SqlClient.
// LINQ to SQL's built-in provider requires System.Data.SqlClient.
public partial class Northwind : DataContext
{
public Table<Customer> Customers;
public Table<Order> Orders;
public Northwind(string connection) : base(connection) { }
}
' Do not use System.Data.SqlClient for new development; use Microsoft.Data.SqlClient.
' LINQ to SQL's built-in provider requires System.Data.SqlClient.
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 ensuite exprimer la requête des clients de Londres plus simplement comme suit :
// Do not use System.Data.SqlClient for new development; use Microsoft.Data.SqlClient.
// LINQ to SQL's built-in provider requires System.Data.SqlClient.
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);
' Do not use System.Data.SqlClient for new development; use Microsoft.Data.SqlClient.
' LINQ to SQL's built-in provider requires System.Data.SqlClient.
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