Partager via


Opérations d'insertion, de mise à jour et de suppression (LINQ to SQL)

Mise à jour : November 2007

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.

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 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 Procédure : supprimer des lignes de la base de données (LINQ to SQL).

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.

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

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.

Remarque :

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 (LINQ to SQL).

Les développeurs qui utilisent Visual Studio peuvent développer des procédures stockées dans ce but à l'aide du Concepteur Objet/Relationnel.

Voir aussi

Concepts

Téléchargement d'exemples de bases de données (LINQ to SQL)

Autres ressources

Personnalisation des opérations d'insertion, de mise à jour et de suppression (LINQ to SQL)