Udostępnij za pośrednictwem


Operacje wstawiania, aktualizowania i usuwania

InsertWykonujesz operacje , Updatei Delete w linQ to SQL, dodając, zmieniając i usuwając obiekty w modelu obiektów. Domyślnie LINQ to SQL tłumaczy akcje na język SQL i przesyła zmiany do bazy danych.

LINQ to SQL zapewnia maksymalną elastyczność manipulowania i utrwalania zmian wprowadzonych w obiektach. Gdy tylko obiekty jednostki są dostępne (przez pobranie ich za pomocą zapytania lub utworzenie ich na nowo), można je zmienić jako typowe obiekty w aplikacji. Oznacza to, że możesz zmienić ich wartości, możesz dodać je do kolekcji i usunąć je z kolekcji. LINQ to SQL śledzi zmiany i jest gotowy do ich przesłania z powrotem do bazy danych podczas wywoływania metody SubmitChanges.

Uwaga

LinQ to SQL nie obsługuje ani nie rozpoznaje operacji usuwania kaskadowego. Jeśli chcesz usunąć wiersz w tabeli, która ma ograniczenia, musisz ustawić ON DELETE CASCADE regułę w ograniczeniu klucza obcego w bazie danych lub użyć własnego kodu, aby najpierw usunąć obiekty podrzędne, które uniemożliwiają usunięcie obiektu nadrzędnego. W przeciwnym razie jest zgłaszany wyjątek. Aby uzyskać więcej informacji, zobacz How to: Delete Rows From the Database (Instrukcje: usuwanie wierszy z bazy danych).

W poniższych fragmentach użyto Customer klas i Order z przykładowej bazy danych Northwind. Definicje klas nie są wyświetlane w celu zwięzłości.

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

Po wywołaniu SubmitChangesmetody funkcja LINQ to SQL automatycznie generuje i wykonuje polecenia SQL, które muszą być przesyłane z powrotem do bazy danych.

Uwaga

To zachowanie można zastąpić przy użyciu własnej logiki niestandardowej, zwykle za pomocą procedury składowanej. Aby uzyskać więcej informacji, zobacz Obowiązki dewelopera w zastępowaniu domyślnego zachowania.

Deweloperzy korzystający z programu Visual Studio mogą używać Projektant obiektowych do tworzenia procedur składowanych w tym celu.

Zobacz też