Operazioni Insert, Update e Delete (LINQ to SQL)

In LINQ to SQL le operazioni Insert, Updatee Delete vengono eseguite aggiungendo, modificando e rimuovendo oggetti nel modello a oggetti. Per impostazione predefinita, le azioni vengono convertite da LINQ to SQL in SQL e le modifiche vengono inviate al database.

In LINQ to SQL viene offerta la massima flessibilità per quanto riguarda la modifica e il salvataggio in modo permanente delle 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. In LINQ to SQL viene tenuta traccia delle modifiche, che verranno trasmesse di nuovo al database quando si chiama SubmitChanges.

NotaNota

LINQ to SQL non supporta o non riconosce operazioni di eliminazione a catena.Se si desidera eliminare una riga di una tabella contenente vincoli, è necessario impostare la regola ON DELETE CASCADE nel vincolo di chiave esterna del database o utilizzare il proprio codice per eliminare innanzitutto gli oggetti figlio che impediscono l'eliminazione dell'oggetto padre. In caso contrario, viene generata un'eccezione.Per ulteriori informazioni, vedere Procedura: eliminare righe dal database (LINQ to SQL).

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

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

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

NotaNota

È possibile eseguire l'override di questo comportamento utilizzando una logica personalizzata, in genere mediante una stored procedure.Per ulteriori informazioni, vedere Responsabilità dello sviluppatore nell'eseguire l'override del comportamento predefinito (LINQ to SQL).

Gli sviluppatori che utilizzano Visual Studio possono adoperare Object Relational Designer per sviluppare stored procedure a questo scopo.Per ulteriori informazioni, vedere Progettazione relazionale oggetti e Progettazione relazionale oggetti e Progettazione relazionale oggetti.

Vedere anche

Concetti

Download dei database di esempio (LINQ to SQL)

Altre risorse

Personalizzazione delle operazioni Insert, Update e Delete (LINQ to SQL)