Operações de inserção, atualização e exclusão
Você executa operações Insert
, Update
e Delete
no LINQ to SQL adicionando, modificando e removendo objetos no seu modelo de objeto. Por padrão, o LINQ to SQL converte suas ações para SQL e envia as alterações para o banco de dados.
O LINQ to SQL oferece a máxima flexibilidade em manipular e persistir as alterações que você fez a seus objetos. Assim que os objetos de entidade estiverem disponíveis (recuperando-os por meio de uma consulta ou construindo-os do zero), você poderá alterá-los como objetos típicos em seu aplicativo. Isto é, você pode alterar seus valores, adicioná-los às coleções e removê-los das coleções. O LINQ to SQL controla as alterações e está pronto para transmiti-las de volta para o banco de dados quando você chama SubmitChanges.
Observação
O LINQ to SQL não dá suporte a nem reconhece operações de exclusão em cascata. Se você deseja excluir uma linha em uma tabela que tem restrições nela, defina a regra ON DELETE CASCADE
na restrição de chave estrangeira no banco de dados ou use seu próprio código para primeiro excluir os objetos filho que impedem que o objeto pai seja excluído. Caso contrário, uma exceção será gerada. Para obter mais informações, consulte Como: excluir linhas do banco de dados.
Os seguintes trechos usam as classes Customer
e Order
do banco de dados de exemplo Northwind. As definições de classe não são mostradas para abreviar.
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 você chama SubmitChanges, o LINQ to SQL automaticamente gera e executa comandos SQL de que ele deve passar suas alterações de volta para o banco de dados.
Observação
Você pode substituir esse comportamento usando sua própria lógica personalizada, geralmente usando um procedimento armazenado. Para obter mais informações, consulte Responsabilidades do desenvolvedor em substituir o comportamento padrão.
Desenvolvedores que utilizam o Visual Studio podem usar o Object Relational Designer para desenvolver procedimentos armazenados para essa finalidade.