Procedura dettagliata: Modello a oggetti e query semplici (C#)Walkthrough: Simple Object Model and Query (C#)

Questa procedura dettagliata descrive uno scenario LINQ to SQLLINQ to SQL end-to-end di base con complessità minime.This walkthrough provides a fundamental end-to-end LINQ to SQLLINQ to SQL scenario with minimal complexities. Verranno create una classe di entità per la modellazione della tabella Customers nel database Northwind di esempio,You will create an entity class that models the Customers table in the sample Northwind database. quindi una semplice query per elencare i clienti residenti nell'area londinese.You will then create a simple query to list customers who are located in London.

Questa procedura dettagliata è basata sul codice in fase di progettazione per illustrare i concetti di LINQ to SQLLINQ to SQL.This walkthrough is code-oriented by design to help show LINQ to SQLLINQ to SQL concepts. Normalmente per creare il modello a oggetti si usa Object Relational DesignerObject Relational Designer.Normally speaking, you would use the Object Relational DesignerObject Relational Designer to create your object model.

Nota

Nomi o percorsi visualizzati per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti potrebbero essere diversi nel computer in uso.Your computer might show different names or locations for some of the Visual Studio user interface elements in the following instructions. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi.The Visual Studio edition that you have and the settings that you use determine these elements. Per altre informazioni, vedere Personalizzazione dell'IDE.For more information, see Personalizing the IDE.

Questa procedura è stata scritta usando Impostazioni di sviluppo di Visual C#.This walkthrough was written by using Visual C# Development Settings.

PrerequisitiPrerequisites

  • Per i file usati nella procedura dettagliata viene usata una cartella dedicata ("c:\linqtest5").This walkthrough uses a dedicated folder ("c:\linqtest5") to hold files. Creare la cartella prima di avviare la procedura.Create this folder before you begin the walkthrough.

  • Per questa procedura dettagliata è richiesto il database di esempio Northwind.This walkthrough requires the Northwind sample database. Se questo database non è disponibile nel computer di sviluppo, è possibile scaricarlo dal sito di download Microsoft.If you do not have this database on your development computer, you can download it from the Microsoft download site. Per istruzioni, vedere download dei database di esempio.For instructions, see Downloading Sample Databases. Dopo avere scaricato il database, copiare il file nella cartella c:\linqtest5.After you have downloaded the database, copy the file to the c:\linqtest5 folder.

PanoramicaOverview

La procedura dettagliata è costituita da sei attività principali:This walkthrough consists of six main tasks:

  • Creazione di un LINQ to SQLLINQ to SQL soluzione in Visual Studio.Creating a LINQ to SQLLINQ to SQL solution in Visual Studio.

  • Mapping di una classe a una tabella del database.Mapping a class to a database table.

  • Definizione di proprietà nella classe per rappresentare colonne del database.Designating properties on the class to represent database columns.

  • Definizione della connessione al database Northwind.Specifying the connection to the Northwind database.

  • Creazione di una semplice query da eseguire sul database.Creating a simple query to run against the database.

  • Esecuzione della query e analisi dei risultati.Executing the query and observing the results.

Creazione di una soluzione LINQ to SQLCreating a LINQ to SQL Solution

In questa prima attività, viene creata una soluzione Visual Studio che contiene i riferimenti necessari per compilare ed eseguire un LINQ to SQLLINQ to SQL progetto.In this first task, you create a Visual Studio solution that contains the necessary references to build and run a LINQ to SQLLINQ to SQL project.

Per creare una soluzione LINQ to SQLTo create a LINQ to SQL solution

  1. In Visual Studio File dal menu New, quindi fare clic su progetto.On the Visual Studio File menu, point to New, and then click Project.

  2. Nel tipi di progetto riquadro del nuovo progetto la finestra di dialogo, fare clic su Visual c#.In the Project types pane of the New Project dialog box, click Visual C#.

  3. Nel riquadro Modelli fare clic su Applicazione console.In the Templates pane, click Console Application.

  4. Nel nome digitare LinqConsoleApp.In the Name box, type LinqConsoleApp.

  5. Nel percorso verificare in cui si desidera archiviare i file di progetto.In the Location box, verify where you want to store your project files.

  6. Fare clic su OK.Click OK.

Aggiunta di riferimenti e direttive LINQAdding LINQ References and Directives

In questa procedura dettagliata vengono usati assembly che potrebbero non essere installati per impostazione predefinita nel progetto.This walkthrough uses assemblies that might not be installed by default in your project. Se LINQ non è elencato come riferimento nel progetto (espandere il riferimenti nodo Esplora), aggiungerlo come spiegato nella procedura seguente.If System.Data.Linq is not listed as a reference in your project (expand the References node in Solution Explorer), add it, as explained in the following steps.

Per aggiungere System.Data.LinqTo add System.Data.Linq

  1. In Esplora, fare doppio clic su riferimenti, quindi fare clic su Aggiungi riferimento.In Solution Explorer, right-click References, and then click Add Reference.

  2. Nel Aggiungi riferimento la finestra di dialogo, fare clic su .NET, fare clic sull'assembly LINQ e quindi fare clic su OK.In the Add Reference dialog box, click .NET, click the System.Data.Linq assembly, and then click OK.

    L'assembly verrà aggiunto al progetto.The assembly is added to the project.

  3. Aggiungere le seguenti direttive all'inizio di Program.cs:Add the following directives at the top of Program.cs:

    using System.Data.Linq;
    using System.Data.Linq.Mapping;
    

Mapping di una classe a una tabella del databaseMapping a Class to a Database Table

In questo passaggio verrà creata una classe ed eseguito il mapping della classe a una tabella di database.In this step, you create a class and map it to a database table. Tale classe è detta un classe di entità.Such a class is termed an entity class. Notare che il mapping viene eseguito semplicemente aggiungendo l'attributo TableAttribute.Note that the mapping is accomplished by just adding the TableAttribute attribute. La proprietà Name consente di specificare il nome della tabella nel database.The Name property specifies the name of the table in the database.

Per creare una classe di entità ed eseguire il mapping della classe a una tabella di databaseTo create an entity class and map it to a database table

  • Digitare o incollare il codice seguente in Program.cs immediatamente sopra la dichiarazione della classe Program:Type or paste the following code into Program.cs immediately above the Program class declaration:

    [Table(Name = "Customers")]
    public class Customer
    {
    }
    

Definizione di proprietà nella classe per rappresentare colonne del databaseDesignating Properties on the Class to Represent Database Columns

In questo passaggio si completeranno diverse attività.In this step, you accomplish several tasks.

  • Usare l'attributo ColumnAttribute per definire le proprietà CustomerID e City nella classe di entità in modo che rappresentino colonne nella tabella del database.You use the ColumnAttribute attribute to designate CustomerID and City properties on the entity class as representing columns in the database table.

  • Definire la proprietà CustomerID in modo che rappresenti una colonna di chiave primaria nel database.You designate the CustomerID property as representing a primary key column in the database.

  • Definire i campi _CustomerID e _City per l'archiviazione privata.You designate _CustomerID and _City fields for private storage. LINQ to SQLLINQ to SQL sarà quindi in grado di archiviare e recuperare direttamente i valori, anziché usare funzioni di accesso pubbliche che potrebbero includere la logica di business. can then store and retrieve values directly, instead of using public accessors that might include business logic.

Per rappresentare caratteristiche di due colonne del databaseTo represent characteristics of two database columns

  • Digitare o incollare il codice seguente in Program.cs all'interno delle parentesi graffe della classe Customer:Type or paste the following code into Program.cs inside the curly braces for the Customer class.

    private string _CustomerID;
    [Column(IsPrimaryKey=true, Storage="_CustomerID")]
    public string CustomerID
    {
        get
        {
            return this._CustomerID;
        }
        set
        {
            this._CustomerID = value;
        }
        
    }
    
    private string _City;
    [Column(Storage="_City")]
    public string City
    {
        get
        {
            return this._City;
        }
        set
        {
            this._City=value;
        }
    }
    

Definizione della connessione al database NorthwindSpecifying the Connection to the Northwind Database

In questo passaggio viene usato un oggetto DataContext per stabilire una connessione tra le strutture di dati basate sul codice e il database stesso.In this step you use a DataContext object to establish a connection between your code-based data structures and the database itself. DataContext è il canale principale tramite il quale vengono recuperati oggetti dal database e vengono inviate modifiche.The DataContext is the main channel through which you retrieve objects from the database and submit changes.

Viene anche dichiarato un oggetto Table<Customer> che fungerà da tabella tipizzata logica per le query sulla tabella Customers nel database.You also declare a Table<Customer> to act as the logical, typed table for your queries against the Customers table in the database. Tali query verranno quindi create ed eseguite nei passaggi successivi.You will create and execute these queries in later steps.

Per specificare la connessione al databaseTo specify the database connection

  • Digitare o incollare il codice seguente nel metodo Main:Type or paste the following code into the Main method.

    Si presuppone che il file northwnd.mdf si trovi nella cartella linqtest5.Note that the northwnd.mdf file is assumed to be in the linqtest5 folder. Per altre informazioni, vedere la sezione precedente relativa ai prerequisiti.For more information, see the Prerequisites section earlier in this walkthrough.

    // Use a connection string.
    DataContext db = new DataContext
        (@"c:\linqtest5\northwnd.mdf");
    
    // Get a typed table to run queries.
    Table<Customer> Customers = db.GetTable<Customer>();
    

Creazione di una query sempliceCreating a Simple Query

In questo passaggio viene creata una query per cercare i clienti nella tabella di database Customers residenti nell'area londinese.In this step, you create a query to find which customers in the database Customers table are located in London. Il codice della query in questo passaggio descrive semplicemente la query,The query code in this step just describes the query. ma non la esegue.It does not execute it. Questo approccio è noto come esecuzione posticipata.This approach is known as deferred execution. Per altre informazioni, vedere Introduzione alle query LINQ (C#).For more information, see Introduction to LINQ Queries (C#).

Verrà anche prodotto un output del log per mostrare i comandi SQL generati da LINQ to SQLLINQ to SQL.You will also produce a log output to show the SQL commands that LINQ to SQLLINQ to SQL generates. Questa funzionalità di registrazione, che usa Log, è utile per eseguire il debug e per determinare che i comandi inviati al database rappresentano accuratamente la query.This logging feature (which uses Log) is helpful in debugging, and in determining that the commands being sent to the database accurately represent your query.

Per creare una query sempliceTo create a simple query

  • Digitare o incollare il codice seguente nel metodo Main dopo la dichiarazione Table<Customer>.Type or paste the following code into the Main method after the Table<Customer> declaration.

    // Attach the log to show generated SQL.
    db.Log = Console.Out;
    
    // Query for customers in London.
    IQueryable<Customer> custQuery =
        from cust in Customers
        where cust.City == "London"
        select cust;
    

Esecuzione della queryExecuting the Query

In questo passaggio verrà effettivamente eseguita la query.In this step, you actually execute the query. Le espressioni di query create nei passaggi precedenti non vengono valutate finché i risultati non saranno necessari.The query expressions you created in the previous steps are not evaluated until the results are needed. Quando si inizia l'iterazione foreach, viene eseguito un comando SQL sul database e gli oggetti vengono materializzati.When you begin the foreach iteration, a SQL command is executed against the database and objects are materialized.

Per eseguire la queryTo execute the query

  1. Digitare o incollare il codice seguente alla fine del metodo Main dopo la descrizione della query.Type or paste the following code at the end of the Main method (after the query description).

    foreach (Customer cust in custQuery)
    {
        Console.WriteLine("ID={0}, City={1}", cust.CustomerID,
            cust.City);
    }
    
    // Prevent console window from closing.
    Console.ReadLine();
    
  2. ‎Premere F5 per eseguire il debug dell'applicazione.Press F5 to debug the application.

    Nota

    Se l'applicazione genera un errore di run-time, vedere la sezione Risoluzione dei problemi di apprendimento tramite procedure dettagliate.If your application generates a run-time error, see the Troubleshooting section of Learning by Walkthroughs.

    I risultati della query nella finestra della console dovrebbero avere il seguente aspetto:The query results in the console window should appear as follows:

    ID=AROUT, City=London

    ID=BSBEV, City=London

    ID=CONSH, City=London

    ID=EASTC, City=London

    ID=NORTS, City=London

    ID=SEVES, City=London

  3. Premere INVIO nella finestra della console per chiudere l'applicazione.Press Enter in the console window to close the application.

Passaggi successiviNext Steps

Il procedura dettagliata: esecuzione di query tra relazioni (c#) argomento continua in cui termina questa procedura dettagliata.The Walkthrough: Querying Across Relationships (C#) topic continues where this walkthrough ends. Query tra relazioni procedura dettagliata viene illustrato come LINQ to SQLLINQ to SQL possibile eseguire una query tra tabelle, simile a join in un database relazionale.The Query Across Relationships walkthrough demonstrates how LINQ to SQLLINQ to SQL can query across tables, similar to joins in a relational database.

Se si desidera eseguire la procedura dettagliata relativa all'esecuzione di query tra relazioni, è indispensabile salvare la soluzione per la procedura dettagliata appena completata.If you want to do the Query Across Relationships walkthrough, make sure to save the solution for the walkthrough you have just completed, which is a prerequisite.

Vedere ancheSee Also

Apprendimento tramite procedure dettagliateLearning by Walkthroughs