O que você pode fazer com LINQ to SQL
O LINQ to SQL oferece suporte a todos os principais recursos que você esperaria como desenvolvedor de SQL. Você pode consultar informações, e inserir, atualizar e excluir informações de tabelas.
Seleção
A seleção de (projeção) é obtida simplesmente escrevendo-se uma consulta LINQ na sua própria linguagem de programação e executando-a para recuperar os resultados. O próprio LINQ to SQL converte todas as operações necessárias nas devidas operações SQL com as quais você está familiarizado. Para obter mais informações, consulte LINQ to SQL.
No exemplo a seguir, os nomes de empresas de clientes de Londres são recuperados e exibidos na janela do console.
// Northwnd inherits from System.Data.Linq.DataContext.
Northwnd nw = new Northwnd(@"northwnd.mdf");
// or, if you are not using SQL Server Express
// Northwnd nw = new Northwnd("Database=Northwind;Server=server_name;Integrated Security=SSPI");
var companyNameQuery =
from cust in nw.Customers
where cust.City == "London"
select cust.CompanyName;
foreach (var customer in companyNameQuery)
{
Console.WriteLine(customer);
}
' Northwnd inherits from System.Data.Linq.DataContext.
Dim nw As New Northwnd("c:\northwnd.mdf")
' or, if you are not using SQL Server Express
' Dim nw As New Northwnd("Database=Northwind;Server=dschwart7;Integrated Security=SSPI")
Dim companyNameQuery = _
From cust In nw.Customers _
Where cust.City = "London" _
Select cust.CompanyName
For Each customer In companyNameQuery
Console.WriteLine(customer)
Next
Inserindo
Para executar um Insert
do SQL, basta adicionar objetos ao modelo de objetos que você criou e chamar SubmitChanges em DataContext.
No exemplo a seguir, um novo cliente e informações sobre o cliente são adicionados à tabela Customers
usando InsertOnSubmit.
// Northwnd inherits from System.Data.Linq.DataContext.
Northwnd nw = new Northwnd(@"northwnd.mdf");
Customer cust = new Customer();
cust.CompanyName = "SomeCompany";
cust.City = "London";
cust.CustomerID = "98128";
cust.PostalCode = "55555";
cust.Phone = "555-555-5555";
nw.Customers.InsertOnSubmit(cust);
// At this point, the new Customer object is added in the object model.
// In LINQ to SQL, the change is not sent to the database until
// SubmitChanges is called.
nw.SubmitChanges();
' Northwnd inherits from System.Data.Linq.DataContext.
Dim nw As New Northwnd("c:\northwnd.mdf")
Dim cust As New Customer With {.CompanyName = "SomeCompany", _
.City = "London", _
.CustomerID = 98128, _
.PostalCode = 55555, .Phone = "555-555-5555"}
nw.Customers.InsertOnSubmit(cust)
' At this point, the new Customer object is added in the object model.
' In LINQ to SQL, the change is not sent to the database until
' SubmitChanges is called.
nw.SubmitChanges()
Atualizar
Para Update
uma entrada de banco de dados, primeiro recupere o item e edite-o diretamente no modelo de objeto. Depois que você modificou o objeto, chame SubmitChanges no DataContext para atualizar o banco de dados.
No exemplo a seguir, todos os clientes que são de Londres são recuperados. O nome da cidade é alterado de “Londres” para “Londres - metro”. Finalmente, SubmitChanges é chamado para enviar as alterações para o banco de dados.
Northwnd nw = new Northwnd(@"northwnd.mdf");
var cityNameQuery =
from cust in nw.Customers
where cust.City.Contains("London")
select cust;
foreach (var customer in cityNameQuery)
{
if (customer.City == "London")
{
customer.City = "London - Metro";
}
}
nw.SubmitChanges();
Dim nw As New Northwnd("c:\northwnd.mdf")
Dim cityNameQuery = _
From cust In nw.Customers _
Where cust.City.Contains("London") _
Select cust
For Each customer In cityNameQuery
If customer.City = "London" Then
customer.City = "London - Metro"
End If
Next
nw.SubmitChanges()
Excluir
Para Delete
um item, remova-o da coleção à qual ele pertence e, em seguida, chame SubmitChanges no DataContext para confirmar a alteração.
Observação
O LINQ to SQL não reconhece operações de exclusão em cascata. Se você quiser excluir uma linha em uma tabela em relação à qual haja restrições, consulte Como: Excluir Linhas do Banco de Dados.
No exemplo a seguir, o cliente que tem CustomerID
de 98128
é recuperado do banco de dados. Em seguida, após ter confirmado que a linha do cliente foi recuperada, DeleteOnSubmit é chamado para remover esse objeto da coleção. Finalmente, SubmitChanges é chamado para encaminhar a exclusão para o banco de dados.
Northwnd nw = new Northwnd(@"northwnd.mdf");
var deleteIndivCust =
from cust in nw.Customers
where cust.CustomerID == "98128"
select cust;
if (deleteIndivCust.Count() > 0)
{
nw.Customers.DeleteOnSubmit(deleteIndivCust.First());
nw.SubmitChanges();
}
Dim nw As New Northwnd("c:\northwnd.mdf")
Dim deleteIndivCust = _
From cust In nw.Customers _
Where cust.CustomerID = 98128 _
Select cust
If deleteIndivCust.Count > 0 Then
nw.Customers.DeleteOnSubmit(deleteIndivCust.First)
nw.SubmitChanges()
End If