Operazioni di inserimento, aggiornamento ed eliminazione

InsertEseguire operazioni , Updatee Delete in LINQ to SQL aggiungendo, modificando e rimuovendo oggetti nel modello a oggetti. Per impostazione predefinita, LINQ to SQL converte le azioni in SQL e invia le modifiche al database.

LINQ to SQL offre massima flessibilità nel modificare e rendere persistenti le modifiche apportate agli oggetti. Non appena gli oggetti entità sono disponibili, recuperandoli tramite una query o costruendoli di nuovo, è possibile modificarli nell'applicazione come oggetti normali. In altre parole, è possibile modificarne i valori e aggiungerli o rimuoverli dalle raccolte. LINQ to SQL tiene traccia delle modifiche e è pronto per trasmetterli al database quando si chiama SubmitChanges.

Nota

LINQ to SQL non supporta o riconosce operazioni di eliminazione a catena. Se si vuole eliminare una riga in una tabella con vincoli, è necessario impostare la ON DELETE CASCADE regola nel vincolo chiave esterna nel database oppure usare il codice per eliminare prima gli oggetti figlio che impediscono l'eliminazione dell'oggetto padre. In caso contrario, viene generata un'eccezione. Per altre informazioni, vedere Procedura: Eliminare righe dal database.

Nei frammenti di codice riportati di seguito vengono usate le classi Customere Order del database di esempio Northwind. Le definizioni di classe non sono illustrate per brevità.

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

Quando si chiama SubmitChanges, LINQ to SQL genera automaticamente ed esegue i comandi SQL necessari per trasmettere le modifiche al database.

Nota

È possibile eseguire l'override di questo comportamento usando una logica personalizzata, in genere mediante una stored procedure. Per altre informazioni, vedere Responsabilità dello sviluppatore in Override del comportamento predefinito.

Gli sviluppatori che usano Visual Studio possono usare il Object Relational Designer per sviluppare stored procedure per questo scopo.

Vedi anche