Share via


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.

Confira também