Compartir a través de


Cómo: Conectarse a una base de datos (LINQ to SQL)

Actualización: November 2007

DataContext es la canalización principal mediante la cual se conecta a una base de datos, recupera los objetos de ella y le vuelve a enviar los cambios. DataContext se utiliza igual que si se tratase de un objeto SqlConnection de ADO.NET. De hecho, DataContext se inicializa con la conexión o cadena de conexión que proporcione. Para obtener más información, consulte Métodos DataContext (Diseñador relacional de objetos).

El propósito de DataContext es convertir sus solicitudes de objetos en consultas SQL que se van a ejecutar en la base de datos y, a continuación, ensamblar los objetos a partir de los resultados. DataContext habilita Language-Integrated Query (LINQ) al implementar el mismo modelo de operador que los operadores de consulta estándar, como Where y Select.

Nota de seguridad:

Es fundamental mantener una conexión segura. Para obtener más información, consulte Seguridad en LINQ to SQL.

Ejemplo

En el ejemplo siguiente, se utiliza DataContext para establecer una conexión con la base de datos de ejemplo Northwind y recuperar las filas de clientes cuya ciudad es Londres (London).

' DataContext takes a connection string.
Dim db As New DataContext("…\Northwnd.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
// DataContext takes a connection string. 
DataContext db = new DataContext(@"c:\Northwnd.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);

Cada tabla de base de datos se representa como una colección Table disponible a través del método GetTable, utilizando la clase de entidad para su identificación.

El procedimiento recomendado es declarar un DataContext con establecimiento inflexible de tipos en lugar de confiar en la clase DataContext básica y el método GetTable. Un DataContext con establecimiento inflexible de tipos declara todas las colecciones Table como miembros del contexto, como en el ejemplo siguiente.

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
public partial class Northwind : DataContext
{
    public Table<Customer> Customers;
    public Table<Order> Orders;
    public Northwind(string connection) : base(connection) { }
}

Después, puede expresar la consulta de clientes de Londres de manera más sencilla:

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
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);

Vea también

Otros recursos

Comunicar con la base de datos (LINQ to SQL)