Compartilhar via


Operações de inserção, atualização e exclusão

Você executa Insert, Updatee Delete operações no LINQ to SQL adicionando, alterando e removendo objetos em seu modelo de objeto. Por padrão, LINQ para SQL converte suas ações para SQL e envia as alterações para o banco de dados.

O LINQ to SQL oferece flexibilidade máxima 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 controla suas alterações e está pronto para transmiti-las de volta para o banco de dados quando você chamar SubmitChanges.

Observação

O LINQ to SQL não dá suporte nem reconhece operações de exclusão em cascata. Se você quiser excluir uma linha em uma tabela que tenha restrições aplicadas a ela, deverá definir a regra ON DELETE CASCADE na restrição de chave estrangeira no banco de dados ou usar seu próprio código para primeiro excluir os objetos filhos que impedem a exclusão do objeto pai. Caso contrário, uma exceção será gerada. Para obter mais informações, consulte Como excluir linhas do banco de dados.

Os trechos a seguir usam as classes Customer e Order do banco de dados de exemplo Northwind. As definições de classe não são mostradas para fins de 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 SubmitChanges, o LINQ para SQL gera e executa automaticamente os comandos SQL que ele deve ter para transmitir suas alterações de volta para o banco de dados.

Observação

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 as responsabilidades do desenvolvedor na substituição do comportamento padrão.

Os desenvolvedores que usam o Visual Studio podem usar o Designer Relacional de Objetos para desenvolver procedimentos armazenados para essa finalidade.

Consulte também