Operazioni di inserimento, aggiornamento ed eliminazioneInsert, Update, and Delete Operations

In Insert le operazioni Update, Deletee LINQ to SQLLINQ to SQL vengono eseguite aggiungendo, modificando e rimuovendo oggetti nel modello a oggetti.You perform Insert, Update, and Delete operations in LINQ to SQLLINQ to SQL by adding, changing, and removing objects in your object model. Per impostazione predefinita, le azioni vengono convertite da LINQ to SQLLINQ to SQL in SQL e le modifiche vengono inviate al database.By default, LINQ to SQLLINQ to SQL translates your actions to SQL and submits the changes to the database.

LINQ to SQLLINQ to SQL offre la massima flessibilità per la modifica e salvare in modo permanente le modifiche apportate agli oggetti. offers maximum flexibility in manipulating and persisting changes that you made to your objects. Non appena gli oggetti entità sono disponibili (in recuperandoli tramite una query o costruendoli), è possibile modificarle in un'applicazione come oggetti normali.As soon as entity objects are available (either by retrieving them through a query or by constructing them anew), you can change them as typical objects in your application. Vale a dire, è possibile modificare i relativi valori, è possibile aggiungerli alle raccolte e rimuoverli dalle raccolte.That is, you can change their values, you can add them to your collections, and you can remove them from your collections. In LINQ to SQLLINQ to SQL viene tenuta traccia delle modifiche, che verranno trasmesse di nuovo al database quando si chiama SubmitChanges.LINQ to SQLLINQ to SQL tracks your changes and is ready to transmit them back to the database when you call SubmitChanges.

Nota

LINQ to SQLLINQ to SQL non supporta o non riconosce operazioni di eliminazione a catena. does not support or recognize cascade-delete operations. Se si desidera eliminare una riga in una tabella contenente vincoli, è necessario impostare il ON DELETE CASCADE regola nel vincolo di chiave esterna nel database o utilizzare il proprio codice per eliminare prima gli oggetti figlio che impediscono l'eliminazione oggetto padre.If you want to delete a row in a table that has constraints against it, you must either set the ON DELETE CASCADE rule in the foreign-key constraint in the database, or use your own code to first delete the child objects that prevent the parent object from being deleted. In caso contrario, viene generata un'eccezione.Otherwise, an exception is thrown. Per ulteriori informazioni, vedere procedura: eliminare righe dal Database.For more information, see How to: Delete Rows From the Database.

Nei frammenti di codice riportati di seguito vengono usate le classi Customere Order del database di esempio Northwind.The following excerpts use the Customer and Order classes from the Northwind sample database. Le definizioni di classe non sono illustrate per brevità.Class definitions are not shown for brevity.

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 SQLLINQ to SQL genera automaticamente ed esegue i comandi SQL necessari per trasmettere di nuovo le modifiche al database.When you call SubmitChanges, LINQ to SQLLINQ to SQL automatically generates and executes the SQL commands that it must have to transmit your changes back to the database.

Nota

È possibile eseguire l'override di questo comportamento usando una logica personalizzata, in genere mediante una stored procedure.You can override this behavior by using your own custom logic, typically by way of a stored procedure. Per ulteriori informazioni, vedere responsabilità dello sviluppatore nell'override del comportamento predefinito.For more information, see Responsibilities of the Developer In Overriding Default Behavior.

Gli sviluppatori che usano Visual Studio è possono utilizzare il Object Relational DesignerObject Relational Designer per sviluppare stored procedure per questo scopo.Developers using Visual Studio can use the Object Relational DesignerObject Relational Designer to develop stored procedures for this purpose.

Vedere ancheSee Also

Download di database di esempioDownloading Sample Databases
Personalizzazione di operazioni di inserimento, aggiornamento ed eliminazioneCustomizing Insert, Update, and Delete Operations