Partager via


Procédure : se connecter à une base de données (LINQ to SQL)

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. Le DataContext fonctionne comme un 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 Méthodes DataContext (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 LINQ (Language Integrated Query) en implémentant le même modèle d'opérateur que les opérateurs de requête standard, tels que Where et Select.

Note de sécuritéNote de sécurité

Il est primordial de maintenir une connexion sécurisée.Pour plus d'informations, consultez Sécurité dans LINQ to SQL.

Exemple

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.
Dim db As New DataContext("…\Northwnd.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
// DataContext takes a connection string. 
DataContext db = new DataContext(@"c:\Northwnd.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);

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.

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.

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
public partial class Northwind : DataContext
{
    public Table<Customer> Customers;
    public Table<Order> Orders;
    public Northwind(string connection) : base(connection) { }
}

Vous pouvez exprimer ensuite plus simplement la requête de clients de Londres comme suit :

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
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);

Voir aussi

Autres ressources

Communication avec la base de données (LINQ to SQL)