Freigeben über


Einfüge-, Aktualisierungs- und Löschvorgänge

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 sendet die Änderungen an die Datenbank.

LINQ to SQL bietet maximale Flexibilität beim Bearbeiten und Beibehalten von Änderungen, die Sie an Ihren Objekten vorgenommen haben. Sobald Entitätsobjekte verfügbar sind (entweder durch Abrufen durch eine Abfrage oder durch neu erstellen), können Sie sie als typische Objekte in Ihrer Anwendung ändern. Das heißt, Sie können deren Werte ändern, sie ihren Sammlungen hinzufügen und sie aus Ihren Sammlungen entfernen. LINQ to SQL verfolgt Ihre Änderungen und ist bereit, sie beim Aufruf SubmitChangesan die Datenbank zurückzuleiten.

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, die Einschränkungen enthält, müssen Sie entweder die ON DELETE CASCADE Regel in der Fremdschlüsseleinschränkung in der Datenbank festlegen oder ihren eigenen Code verwenden, um zuerst die untergeordneten Objekte zu löschen, die verhindern, dass das übergeordnete Objekt gelöscht wird. Andernfalls wird eine Ausnahme ausgelöst. Weitere Informationen finden Sie unter How to: Delete Rows From the Database.

Die folgenden Auszüge verwenden die Customer Und Order Klassen aus der Northwind-Beispieldatenbank. Klassendefinitionen werden aus Platzgründen 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()

Beim Aufrufen SubmitChangesgeneriert und führt LINQ to SQL automatisch die SQL-Befehle aus, die sie zum Übertragen Ihrer Änderungen an die Datenbank benötigen.

Hinweis

Sie können dieses Verhalten überschreiben, indem Sie ihre eigene benutzerdefinierte Logik verwenden, in der Regel mithilfe einer gespeicherten Prozedur. Weitere Informationen finden Sie unter Verantwortlichkeiten des Entwicklers beim Überschreiben des Standardverhaltens.

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

Siehe auch