Opérations d'insertion, de mise à jour et de suppression

Pour effectuer des opérations d'Insert, de Update et de Delete dans LINQ to SQL, ajoutez, modifiez et supprimez des objets dans votre modèle objet. Par défaut, LINQ to SQL traduit vos actions en SQL et soumet les modifications à la base de données.

LINQ to SQL vous offre une souplesse maximale pour manipuler vos objets et rendre les modifications persistantes. Dès que des objets d'entité sont disponibles (objets récupérés via une requête ou reconstruits), vous pouvez les modifier comme des objets standard de votre application. Vous pouvez ainsi modifier leurs valeurs, les ajouter à vos collections et les supprimer de vos collections. LINQ to SQL suit vos modifications et est prêt à les renvoyer à la base de données lorsque vous appelez SubmitChanges.

Notes

LINQ to SQL ne prend pas en charge et ne reconnaît pas les opérations de suppression en cascade. Si vous souhaitez supprimer une ligne dans une table comportant des contraintes sur cette suppression, vous devez définir la règle ON DELETE CASCADE dans la contrainte de clé étrangère dans la base de données, ou utiliser votre propre code pour supprimer en premier les objets enfants qui empêchent la suppression de l'objet parent. Sinon, une exception est levée. Pour plus d’informations, consultez Guide pratique pour supprimer des lignes de la base de données.

Les extraits suivants utilisent les classes Customer et Order de l'exemple de base de données Northwind. Les définitions de classe ne sont pas présentées pour des raisons de concision.

Northwnd db = new Northwnd(@"c:\Northwnd.mdf");

// Query for a specific customer.
var cust =
    (from c in db.Customers
     where c.CustomerID == "ALFKI"
     select c).First();

// Change the name of the contact.
cust.ContactName = "New Contact";

// Create and add a new Order to the Orders collection.
Order ord = new Order { OrderDate = DateTime.Now };
cust.Orders.Add(ord);

// Delete an existing Order.
Order ord0 = cust.Orders[0];

// Removing it from the table also removes it from the Customer’s list.
db.Orders.DeleteOnSubmit(ord0);

// Ask the DataContext to save all the changes.
db.SubmitChanges();
Dim db As New Northwnd("…\Northwnd.mdf")

Dim cust As Customer = _
(From c In db.Customers _
 Where c.CustomerID = "ALFKI" _
 Select c) _
.First()

' Change the name of the contact.
cust.ContactName = "New Contact"

' Create and add a new Order to Orders collection.
Dim ord As New Order With {.OrderDate = DateTime.Now}
cust.Orders.Add(ord)

' Delete an existing Order.
Dim ord0 As Order = cust.Orders(0)

' Removing it from the table also removes it from 
' the Customer’s list.
db.Orders.DeleteOnSubmit(ord0)

' Ask the DataContext to save all the changes.
db.SubmitChanges()

Lorsque vous appelez SubmitChanges, LINQ to SQL génère automatiquement et exécute les commandes SQL requises pour renvoyer vos modifications à la base de données.

Notes

Vous pouvez substituer ce comportement en utilisant votre propre logique personnalisée, en général au moyen d'une procédure stockée. Pour plus d'informations, consultez Responsabilités du développeur en matière de substitution du comportement par défaut.

Les développeurs travaillant avec Visual Studio peuvent utiliser le Concepteur Objet Relationnel pour développer des procédures stockées dans ce but.

Voir aussi