Dela via


Infoga, uppdatera och ta bort åtgärder

Du utför Insert, Updateoch Delete åtgärder i LINQ till SQL genom att lägga till, ändra och ta bort objekt i objektmodellen. Som standard översätter LINQ till SQL dina åtgärder till SQL och skickar ändringarna till databasen.

LINQ till SQL ger maximal flexibilitet när det gäller att manipulera och bevara ändringar som du har gjort i dina objekt. Så snart entitetsobjekt är tillgängliga (antingen genom att hämta dem via en fråga eller genom att konstruera dem på nytt) kan du ändra dem som vanliga objekt i ditt program. Det vill: du kan ändra deras värden, du kan lägga till dem i dina samlingar och du kan ta bort dem från dina samlingar. LINQ till SQL spårar dina ändringar och är redo att överföra dem tillbaka till databasen när du anropar SubmitChanges.

Kommentar

LINQ till SQL stöder inte eller känner igen åtgärder för borttagning av kaskad. Om du vill ta bort en rad i en tabell som har begränsningar mot den, måste du antingen ange ON DELETE CASCADE regeln i villkoret sekundärnyckel i databasen eller använda din egen kod för att först ta bort de underordnade objekt som förhindrar att det överordnade objektet tas bort. Annars utlöses ett undantag. Mer information finns i Så här tar du bort rader från databasen.

Följande utdrag använder klasserna Customer och Order från Northwind-exempeldatabasen. Klassdefinitioner visas inte med korthet.

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

När du anropar SubmitChangesgenererar LINQ till SQL automatiskt och kör de SQL-kommandon som måste överföra ändringarna tillbaka till databasen.

Kommentar

Du kan åsidosätta det här beteendet med hjälp av din egen anpassade logik, vanligtvis genom en lagrad procedur. Mer information finns i Ansvarsområden för utvecklaren i övergripande standardbeteende.

Utvecklare som använder Visual Studio kan använda Object Relational Designer för att utveckla lagrade procedurer för detta ändamål.

Se även