Partager via


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

Vous effectuez les opérations Insert, Update et Delete dans LINQ to SQL en ajoutant, en modifiant et en supprimant des objets dans votre modèle objet. Par défaut, LINQ to SQL traduit vos actions en SQL et envoie les modifications à la base de données.

LINQ to SQL offre une flexibilité maximale en matière de manipulation et de persistance des modifications apportées à vos objets. Dès que des objets d’entité sont disponibles (soit en les récupérant via une requête, soit en les construisant, vous pouvez les modifier en tant qu’objets classiques dans votre application. Autrement dit, vous pouvez modifier leurs valeurs, les ajouter à vos collections et les supprimer de vos collections. LINQ to SQL effectue le suivi de vos modifications et est prêt à les transmettre à la base de données lorsque vous appelez SubmitChanges.

Remarque

LINQ to SQL ne prend pas en charge ni ne reconnaît les opérations de suppression en cascade. Si vous souhaitez supprimer une ligne d’une table qui a des contraintes, vous devez définir la ON DELETE CASCADE règle dans la contrainte de clé étrangère dans la base de données ou utiliser votre propre code pour supprimer d’abord les objets enfants qui empêchent la suppression de l’objet parent. Sinon, une exception est levée. Pour plus d’informations, consultez Comment : 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 classes ne sont pas affichées pour la 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 et exécute automatiquement les commandes SQL qu’il doit avoir pour transmettre vos modifications à la base de données.

Remarque

Vous pouvez remplacer ce comportement à l’aide de votre propre logique personnalisée, généralement par le biais d’une procédure stockée. Pour plus d’informations, consultez Responsabilités du développeur en remplacement du comportement par défaut.

Les développeurs utilisant Visual Studio peuvent utiliser le Concepteur relationnel objet pour développer des procédures stockées à cet effet.

Voir aussi