Procedura: connettersi a un databaseHow to: Connect to a Database

DataContext funge da canale principale per la connessione a un database, il recupero degli oggetti e l'invio delle modifiche.The DataContext is the main conduit by which you connect to a database, retrieve objects from it, and submit changes back to it. Utilizzare il DataContext esattamente come si utilizzerebbe un ADO.NETADO.NET SqlConnection.You use the DataContext just as you would use an ADO.NETADO.NET SqlConnection. L'inizializzazione di DataContext, infatti, viene effettuata con una connessione o una stringa di connessione specificata.In fact, the DataContext is initialized with a connection or connection string that you supply. Per ulteriori informazioni, vedere metodi DataContext (O/R Designer).For more information, see DataContext Methods (O/R 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.The purpose of the DataContext is to translate your requests for objects into SQL queries to be made against the database, and then to assemble objects out of the results. DataContext viene abilitato da LINQ (Language-Integrated Query)Language-Integrated Query (LINQ) mediante l'implementazione dello stesso modello di operatori usato per gli operatori di query standard, ad esempio Where e Select.The DataContext enables LINQ (Language-Integrated Query)Language-Integrated Query (LINQ) by implementing the same operator pattern as the Standard Query Operators, such as Where and Select.

Importante

La gestione di una connessione sicura è della massima importanza.Maintaining a secure connection is of the highest importance. Per ulteriori informazioni, vedere sicurezza in LINQ to SQL.For more information, see Security in LINQ to SQL.

EsempioExample

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.In the following example, the DataContext is used to connect to the Northwind sample database and to retrieve rows of customers whose city is 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.Each database table is represented as a Table collection available by way of the GetTable method, by using the entity class to identify it.

EsempioExample

La procedura consigliata consiste nel dichiarare DataContext con una tipizzazione forte anziché basarsi sulla classe DataContext di base e sul metodo GetTable.Best practice is to declare a strongly typed DataContext instead of relying on the basic DataContext class and the GetTable method. La tipizzazione forte diDataContext consente di dichiarare tutte le raccolte Table come membri del contesto, come illustrato nell'esempio seguente.A strongly typed DataContext declares all Table collections as members of the context, as in the following example.

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:You can then express the query for customers from London more simply as:

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

Vedere ancheSee Also

Comunicazione con il databaseCommunicating with the Database