Operações de inserção, atualização e exclusão
Você executa Insert
, Update
e Delete
operações no LINQ to SQL adicionando, alterando e removendo objetos em seu modelo de objeto. Por padrão, o LINQ to SQL traduz suas ações para SQL e envia as alterações para o banco de dados.
O LINQ to SQL oferece a máxima flexibilidade na manipulação e persistência de alterações feitas em seus objetos. Assim que os objetos de entidade estiverem disponíveis (recuperando-os por meio de uma consulta ou construindo-os novamente), você poderá alterá-los como objetos típicos em seu aplicativo. Ou seja, você pode alterar seus valores, adicioná-los às suas coleções e removê-los de suas coleções. O LINQ to SQL rastreia suas alterações e está pronto para transmiti-las de volta ao banco de dados quando você chamar SubmitChangeso .
Nota
O LINQ to SQL não suporta nem reconhece operações de exclusão em cascata. Se desejar excluir uma linha em uma tabela que tenha restrições contra ela, defina a ON DELETE CASCADE
regra 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 é lançada. Para obter mais informações, consulte Como excluir linhas do banco de dados.
Os trechos a seguir usam as Customer
classes e Order
do banco de dados de exemplo Northwind. As definições de classe não são mostradas para brevidade.
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 SubmitChangeso , o LINQ to SQL gera e executa automaticamente os comandos SQL que ele deve ter para transmitir suas alterações de volta ao banco de dados.
Nota
Você pode substituir esse comportamento usando sua própria lógica personalizada, normalmente por meio de um procedimento armazenado. Para obter mais informações, consulte Responsabilidades do desenvolvedor na substituição do comportamento padrão.
Os desenvolvedores que usam o Visual Studio podem usar o Object Relational Designer para desenvolver procedimentos armazenados para essa finalidade.