Lenguaje
Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importante
No utilice System.Data.SqlClient para el nuevo desarrollo. Utilice Microsoft.Data.SqlClient para el nuevo código de acceso a datos de SQL Server. Estos ejemplos se conservan System.Data.SqlClient porque el proveedor integrado linq to SQL de .NET Framework lo requiere. Cambiar el tipo de conexión por sí solo no migra LINQ to SQL.
DataContext es el conducto principal por el que te conectas a una base de datos, recuperas objetos de ella y envías los cambios de nuevo a ella. Usa el DataContext igual que usarías un ADO.NET SqlConnection. De hecho, el DataContext se inicializa con una conexión o cadena de conexión que usted proporciona. Para obtener más información, vea Métodos DataContext (Diseñador de O/R).
El propósito de DataContext es traducir las solicitudes de objetos en consultas SQL que se realizarán en la base de datos y, a continuación, ensamblar objetos a partir de los resultados.
DataContext habilita Language-Integrated Query (LINQ) mediante la implementación del mismo patrón de operador que los operadores de consulta estándar, como Where y Select.
Importante
Mantener una conexión segura es de la mayor importancia. Para obtener más información, vea Seguridad en LINQ to SQL.
Ejemplo 1
En el ejemplo siguiente, DataContext se usa para conectarse a la base de datos de ejemplo Northwind y para recuperar filas de clientes cuya ciudad es Londres.
// Do not use System.Data.SqlClient for new development; use Microsoft.Data.SqlClient.
// LINQ to SQL's built-in provider requires System.Data.SqlClient.
// 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);
' Do not use System.Data.SqlClient for new development; use Microsoft.Data.SqlClient.
' LINQ to SQL's built-in provider requires System.Data.SqlClient.
' 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 tabla de base de datos se representa como una Table colección disponible mediante el GetTable método , mediante el uso de la clase de entidad para identificarla.
Ejemplo 2
El procedimiento recomendado es declarar un DataContext con tipado fuerte en lugar de confiar en la clase básica DataContext y el método GetTable. Un DataContext fuertemente tipado declara todas las colecciones Table como miembros del contexto, como en el ejemplo siguiente.
// Do not use System.Data.SqlClient for new development; use Microsoft.Data.SqlClient.
// LINQ to SQL's built-in provider requires System.Data.SqlClient.
public partial class Northwind : DataContext
{
public Table<Customer> Customers;
public Table<Order> Orders;
public Northwind(string connection) : base(connection) { }
}
' Do not use System.Data.SqlClient for new development; use Microsoft.Data.SqlClient.
' LINQ to SQL's built-in provider requires System.Data.SqlClient.
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
A continuación, puede expresar la consulta de los clientes de Londres más simplemente como:
// Do not use System.Data.SqlClient for new development; use Microsoft.Data.SqlClient.
// LINQ to SQL's built-in provider requires System.Data.SqlClient.
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);
' Do not use System.Data.SqlClient for new development; use Microsoft.Data.SqlClient.
' LINQ to SQL's built-in provider requires System.Data.SqlClient.
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