Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En LINQ to SQL, las operaciones Insert
, Update
y Delete
se realizan agregando, cambiando y quitando objetos en el modelo de objetos. De forma predeterminada, LINQ to SQL traduce las acciones a SQL y envía los cambios a la base de datos.
LINQ to SQL ofrece máxima flexibilidad para manipular y conservar los cambios realizados en los objetos. En cuanto estén disponibles los objetos de entidad (ya sea recuperandolos a través de una consulta o construyendolos de nuevo), puede cambiarlos como objetos típicos de la aplicación. Es decir, puede cambiar sus valores, puede agregarlos a las colecciones y quitarlos de las colecciones. LINQ to SQL realiza un seguimiento de los cambios y está listo para transmitirlos de nuevo a la base de datos cuando se llama a SubmitChanges.
Nota:
LINQ to SQL no admite ni reconoce operaciones de eliminación en cascada. Si desea eliminar una fila de una tabla que tiene restricciones en ella, debe establecer la ON DELETE CASCADE
regla en la restricción de clave externa de la base de datos o usar su propio código para eliminar primero los objetos secundarios que impiden que se elimine el objeto primario. De lo contrario, se produce una excepción. Para obtener más información, vea Cómo: Eliminar filas de la base de datos.
Los siguientes extractos utilizan las clases Customer
y Order
de la base de datos de ejemplo Northwind. No se muestran las definiciones de clase por brevedad.
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()
Cuando se llama a SubmitChanges, LINQ to SQL genera y ejecuta automáticamente los comandos SQL que debe tener para transmitir los cambios a la base de datos.
Nota:
Puede invalidar este comportamiento mediante su propia lógica personalizada, normalmente mediante un procedimiento almacenado. Para obtener más información, vea Responsabilidades del desarrollador al invalidar el comportamiento predeterminado.
Los desarrolladores que usan Visual Studio pueden usar el Diseñador relacional de objetos para desarrollar procedimientos almacenados con este fin.