Compartilhar via


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

Confira também