Como: conectar-se a um banco de dados
O DataContext é o principal conduto pelo qual você se conecta a um banco de dados, recupera objetos deles e envia alterações de volta para ele. Você usa o DataContext exatamente como usaria uma SqlConnection do ADO.NET. Na verdade, o DataContext é inicializado com uma conexão ou com uma cadeia de conexão que você fornece. Para obter mais informações, confira Métodos DataContext (Designer Relacional de Objetos).
O objetivo do DataContext é converter suas solicitações de objetos em consultas SQL a serem feitas no banco de dados e montar objetos a partir dos resultados. O DataContext habilita o LINQ (consulta integrada à linguagem) implementando o mesmo padrão de operador que os operadores de consulta padrão, como Where
e Select
.
Importante
É muito importante manter uma conexão segura. Para obter mais informações, confira Segurança no LINQ to SQL.
Exemplo 1
No exemplo a seguir, o DataContext é usado para conexão ao banco de dados de exemplo Northwind e recuperar linhas de clientes cuja cidade é Londres.
// DataContext takes a connection string.
DataContext db = new DataContext(@"c:\Northwind.mdf");
// Get a typed table to run queries.
Table<Customer> Customers = db.GetTable<Customer>();
// Query for customers from London.
var query =
from cust in Customers
where cust.City == "London"
select cust;
foreach (var cust in query)
Console.WriteLine("id = {0}, City = {1}", cust.CustomerID, cust.City);
' DataContext takes a connection string.
Dim db As New DataContext("…\Northwind.mdf")
' Get a typed table to run queries.
Dim Customers As Table(Of Customer) = db.GetTable(Of Customer)()
' Query for customer from London.
Dim Query = _
From cust In Customers _
Where cust.City = "London" _
Select cust
For Each cust In Query
Console.WriteLine("id=" & cust.CustomerID & _
", City=" & cust.City)
Next
Cada tabela do banco de dados é representada como uma coleção de Table
disponível por meio do método GetTable usando a classe de entidade para identificá-la.
Exemplo 2
A prática recomendada é declarar um DataContext fortemente tipado em vez de depender da classe básica DataContext e do método GetTable. Um DataContext fortemente tipado declara todas as coleções de Table
como membros do contexto, como no exemplo a seguir.
public partial class Northwind : DataContext
{
public Table<Customer> Customers;
public Table<Order> Orders;
public Northwind(string connection) : base(connection) { }
}
Partial Public Class Northwind
Inherits DataContext
Public Customers As Table(Of Customer)
Public Orders As Table(Of Order)
Public Sub New(ByVal connection As String)
MyBase.New(connection)
End Sub
End Class
Você pode expressar a consulta para clientes de Londres de maneira mais simples, como:
Northwnd db = new Northwnd(@"c:\Northwnd.mdf");
var query =
from cust in db.Customers
where cust.City == "London"
select cust;
foreach (var cust in query)
Console.WriteLine("id = {0}, City = {1}", cust.CustomerID,
cust.City);
Dim db As New Northwind("...\Northwnd.mdf")
Dim query = _
From cust In db.Customers _
Where cust.City = "London" _
Select cust
For Each cust In query
Console.WriteLine("id=" & cust.CustomerID & _
", City=" & cust.City)
Next