Procedura: connettersi a un database

DataContext funge da canale principale per la connessione a un database, il recupero degli oggetti e l'invio delle modifiche. È possibile usare DataContext esattamente come si utilizzerebbe SqlConnection in ADO.NET. L'inizializzazione di DataContext, infatti, viene effettuata con una connessione o una stringa di connessione specificata. Per altre informazioni, vedere Metodi DataContext (Object Relational Designer).

Lo scopo di DataContext consiste nel convertire le richieste di oggetti in query SQL da eseguire sul database, quindi di assemblare gli oggetti dai risultati. Language Integrated Query (LINQ) viene abilitato da DataContext mediante l'implementazione dello stesso modello di operatori usato per gli operatori di query standard, ad esempio Where e Select.

Importante

La gestione di una connessione sicura è della massima importanza. Per altre informazioni, vedere Sicurezza in LINQ to SQL.

Esempio 1

Nell'esempio seguente viene usato DataContext per effettuare la connessione al database di esempio Northwind e recuperare le righe dei clienti la cui città di residenza è London.

// 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

Ogni tabella di database è rappresentata come una raccolta Table disponibile tramite il metodo GetTable usando la classe di entità per identificarlo.

Esempio 2

La procedura consigliata consiste nel dichiarare DataContext con una tipizzazione forte anziché basarsi sulla classe DataContext di base e sul metodo GetTable. La tipizzazione forte diDataContext consente di dichiarare tutte le raccolte Table come membri del contesto, come illustrato nell'esempio seguente.

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

È quindi possibile esprimere la query per i clienti dell'area londinese come:

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

Vedi anche