Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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.