Insert-, Update- und Delete-Operationen (LINQ to SQL)
Aktualisiert: November 2007
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 nicht unterstützt bzw. 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 Gewusst wie: Löschen von Zeilen aus der Datenbank (LINQ to SQL). |
Die folgenden Auszüge verwenden die Customer-Klasse und die Order-Klasse aus der Beispieldatenbank Northwind. Klassendefinitionen werden zur besseren Übersicht nicht angezeigt.
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();
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 des Entwicklers beim Überschreiben des Standardverhaltens (LINQ to SQL). Entwickler, die mit Visual Studio arbeiten, können mithilfe von O/R-Designer gespeicherte Prozeduren zu diesem Zweck entwickeln. |
Siehe auch
Konzepte
Herunterladen von Beispieldatenbanken (LINQ to SQL)
Weitere Ressourcen
Anpassen von Insert-, Update- und Delete-Operationen (LINQ to SQL)