Insert-, Update- und Delete-Operationen

Sie führen die Operationen Insert, Update und Delete in LINQ to SQL aus, indem Sie Objekte dem Objektmodell hinzufügen, diese ändern oder entfernen. Standardmäßig übersetzt LINQ to SQL Ihre Aktionen in SQL und übergibt die Änderungen an die Datenbank.

LINQ to SQL bietet maximale Flexibilität für die Bearbeitung und den Erhalt von Änderungen, die Sie an Ihren Objekten vorgenommen haben. Sobald Entitätsobjekte zur Verfügung stehen (entweder durch Abrufen in einer Abfrage oder durch Neuzusammenstellung), können Sie diese wie typische Objekte in Ihrer Anwendung ändern. Dies bedeutet, dass Sie deren Werte ändern, die Objekte Auflistungen hinzufügen und aus diesen entfernen können. LINQ to SQL verfolgt Ihre Änderungen und kann diese zurück in die Datenbank übertragen, wenn Sie SubmitChanges aufrufen.

Hinweis

Kaskadierte Löschvorgänge werden von LINQ to SQL weder unterstützt noch erkannt. Wenn Sie eine Zeile in einer Tabelle löschen möchten, für die Einschränkungen gelten, legen Sie die ON DELETE CASCADE-Regel in der Fremdschlüsseleinschränkung in der Datenbank fest, oder verwenden Sie eigenen Code, um zunächst die untergeordneten Objekte zu löschen, die das Löschen des übergeordneten Objekts verhindern. Andernfalls wird eine Ausnahme ausgelöst. Weitere Informationen finden Sie unter Vorgehensweise: Löschen von Zeilen aus der Datenbank.

Die folgenden Auszüge verwenden die Customer-Klasse und die Order-Klasse aus der Beispieldatenbank Northwind. Klassendefinitionen werden zur besseren Übersicht nicht angezeigt.

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

Wenn Sie SubmitChanges aufrufen, übernimmt LINQ to SQL automatisch die Erzeugung und Ausführung der SQL-Befehle, die zur Übertragung Ihrer Änderungen in die Datenbank erforderlich sind.

Hinweis

Sie können dieses Verhalten überschreiben, indem Sie Ihre eigene Logik verwenden (typischerweise in Form einer gespeicherten Prozedur). Weitere Informationen finden Sie unter Aufgaben der Entwickler beim Überschreiben von Standardverhalten.

Entwickler, die Visual Studio verwenden, können den objektrelationalen Designer verwenden, um gespeicherte Prozeduren für denselben Zweck zu entwickeln.

Siehe auch