Partager via


Que faire avec LINQ to SQL

LINQ to SQL prend en charge toutes les fonctionnalités clés recherchées par les développeurs SQL. Vous pouvez demander des informations et insérer, mettre à jour et supprimer des informations dans des tables.

Sélectionnez

Pour effectuer une sélection (projection) il vous suffit d’écrire une requête LINQ dans votre propre langage de programmation, puis d’exécuter cette requête afin de récupérer les résultats. LINQ to SQL traduit lui-même toutes les opérations nécessaires en opérations SQL que vous connaissez. Pour plus d’informations, consultez LINQ to SQL.

Dans l'exemple suivant, les noms de société des clients de Londres sont récupérés et affichés dans la fenêtre de console.

// Northwnd inherits from System.Data.Linq.DataContext.
Northwnd nw = new Northwnd(@"northwnd.mdf");
// or, if you are not using SQL Server Express
// Northwnd nw = new Northwnd("Database=Northwind;Server=server_name;Integrated Security=SSPI");

var companyNameQuery =
    from cust in nw.Customers
    where cust.City == "London"
    select cust.CompanyName;

foreach (var customer in companyNameQuery)
{
    Console.WriteLine(customer);
}
' Northwnd inherits from System.Data.Linq.DataContext.
Dim nw As New Northwnd("c:\northwnd.mdf")
' or, if you are not using SQL Server Express
' Dim nw As New Northwnd("Database=Northwind;Server=dschwart7;Integrated Security=SSPI")

Dim companyNameQuery = _
    From cust In nw.Customers _
    Where cust.City = "London" _
    Select cust.CompanyName

For Each customer In companyNameQuery
    Console.WriteLine(customer)
Next

Insertion

Pour exécuter une InsertSQL, il vous suffit d'ajouter des objets au modèle objet que vous avez créé et d'appeler SubmitChanges sur le DataContext.

Dans l'exemple suivant, un nouveau client et des informations le concernant sont ajoutés à la table Customers à l'aide de InsertOnSubmit.

// Northwnd inherits from System.Data.Linq.DataContext.
Northwnd nw = new Northwnd(@"northwnd.mdf");

Customer cust = new Customer();
cust.CompanyName = "SomeCompany";
cust.City = "London";
cust.CustomerID = "98128";
cust.PostalCode = "55555";
cust.Phone = "555-555-5555";
nw.Customers.InsertOnSubmit(cust);

// At this point, the new Customer object is added in the object model.
// In LINQ to SQL, the change is not sent to the database until
// SubmitChanges is called.
nw.SubmitChanges();
' Northwnd inherits from System.Data.Linq.DataContext.
Dim nw As New Northwnd("c:\northwnd.mdf")

Dim cust As New Customer With {.CompanyName = "SomeCompany", _
    .City = "London", _
    .CustomerID = 98128, _
    .PostalCode = 55555, .Phone = "555-555-5555"}
nw.Customers.InsertOnSubmit(cust)
' At this point, the new Customer object is added in the object model.
' In LINQ to SQL, the change is not sent to the database until
' SubmitChanges is called.
nw.SubmitChanges()

Mise à jour

Pour Update une entrée d'une base de données, récupérez d'abord l'élément et modifiez-le directement dans le modèle objet. Après avoir modifié l'objet, appelez SubmitChanges sur le DataContext pour mettre la base de données à jour.

Dans l'exemple suivant, tous les clients de Londres sont récupérés. Le nom de ville "London" est ensuite remplacé par "London - Metro". Enfin, SubmitChanges est appelée pour envoyer les modifications à la base de données.

Northwnd nw = new Northwnd(@"northwnd.mdf");

var cityNameQuery =
    from cust in nw.Customers
    where cust.City.Contains("London")
    select cust;

foreach (var customer in cityNameQuery)
{
    if (customer.City == "London")
    {
        customer.City = "London - Metro";
    }
}
nw.SubmitChanges();
Dim nw As New Northwnd("c:\northwnd.mdf")
Dim cityNameQuery = _
    From cust In nw.Customers _
    Where cust.City.Contains("London") _
    Select cust

For Each customer In cityNameQuery
    If customer.City = "London" Then
        customer.City = "London - Metro"
    End If
Next
nw.SubmitChanges()

En cours de suppression

Pour Delete un élément, supprimez-le de la collection à laquelle il appartient, puis appelez SubmitChanges sur le DataContext pour valider la modification.

Notes

LINQ to SQL ne reconnaît pas les opérations de suppression en cascade. Si vous souhaitez supprimer une ligne dans une table comportant des contraintes, consultez Procédure : Supprimer des lignes de la base de données.

Dans l'exemple suivant, le client dont le CustomerID est 98128 est extrait de la base de données. Ensuite, après confirmation de la récupération de la ligne client, DeleteOnSubmit est appelé pour supprimer cet objet de la collection. Enfin, SubmitChanges est appelé pour envoyer la suppression à la base de données.

Northwnd nw = new Northwnd(@"northwnd.mdf");
var deleteIndivCust =
    from cust in nw.Customers
    where cust.CustomerID == "98128"
    select cust;

if (deleteIndivCust.Count() > 0)
{
    nw.Customers.DeleteOnSubmit(deleteIndivCust.First());
    nw.SubmitChanges();
}
Dim nw As New Northwnd("c:\northwnd.mdf")
Dim deleteIndivCust = _
    From cust In nw.Customers _
    Where cust.CustomerID = 98128 _
    Select cust

If deleteIndivCust.Count > 0 Then
    nw.Customers.DeleteOnSubmit(deleteIndivCust.First)
    nw.SubmitChanges()
End If

Voir aussi