Procedura: eseguire query in un database utilizzando LINQ (Visual Basic)

Con LINQ (Language Integrated Query) è possibile accedere più facilmente alle informazioni sul database ed eseguire query.

L'esempio seguente illustra come creare una nuova applicazione che esegue query su un database di SQL Server.

Negli esempi riportati in questo argomento viene usato il database di esempio Northwind. Se questo database non è presente nel computer di sviluppo, è possibile scaricarlo dall' Area download Microsoft. Per istruzioni, vedere Download di database di esempio.

Nota

I nomi o i percorsi visualizzati per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti potrebbero essere diversi nel computer in uso. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi. Per altre informazioni, vedere Personalizzazione dell'IDE.

Per creare una connessione a un database

  1. In Visual Studio aprire Esplora server/Esplora database facendo clic su Esplora server/Esplora database nel menu Visualizza.

  2. Fare clic con il pulsante destro del mouse su Connessioni dati in Esplora server/Esplora database e quindi fare clic su Aggiungi connessione.

  3. Specificare una connessione valida al database di esempio Northwind.

Per aggiungere un progetto contenente un file LINQ to SQL

  1. In Visual Studio scegliere Nuovo dal menu File e quindi fare clic su Progetto. Selezionare Windows Forms Application di Visual Basic come tipo di progetto.

  2. Dal menu Progetto fare clic su Aggiungi nuovo elemento. Selezionare il modello di elemento Classi LINQ to SQL.

  3. Denominare il file northwind.dbml. Fare clic su Aggiungi. Verrà aperto Object Relational Designer per il file northwind.dbml.

Per aggiungere tabelle per eseguire query in Object Relational Designer

  1. In Esplora server/Esplora database espandere la connessione al database Northwind. Espandere la cartella Tabelle .

    Se Object Relational Designer è stato chiuso, è possibile riaprirlo facendo doppio clic sul file northwind.dbml aggiunto in precedenza.

  2. Fare clic sulla tabella Customers e trascinarla nel riquadro sinistro della finestra di progettazione. Fare clic sulla tabella Orders e trascinarla nel riquadro sinistro della finestra di progettazione.

    La finestra di progettazione crea nuovi oggetti Customer e Order per il progetto. Si noti che la finestra di progettazione rileva automaticamente le relazioni tra le tabelle e crea proprietà figlio per gli oggetti correlati. Ad esempio, IntelliSense mostrerà che l'oggetto Customer include una proprietà Orders per tutti gli ordini correlati a tale cliente.

  3. Salvare le modifiche e chiudere la finestra di progettazione.

  4. Salvare il progetto.

Per aggiungere codice per eseguire query sul database e visualizzare i risultati

  1. Dalla casella degli strumenti trascinare un controllo DataGridView nel modulo Windows Form predefinito per il progetto, Form1.

  2. Fare doppio clic su Form1 per aggiungere codice all'evento Load del modulo.

  3. Quando sono state aggiunte tabelle a Object Relational Designer, la finestra di progettazione ha aggiunto un oggetto DataContext per il progetto. Questo oggetto contiene il codice necessario per accedere a tali tabelle, oltre a singoli oggetti e raccolte per ogni tabella. All'oggetto DataContext per il progetto viene assegnato un nome basato su quello del file con estensione dbml. Per questo progetto il nome dell'oggetto DataContext è northwindDataContext.

    È possibile creare un'istanza di DataContext nel codice ed eseguire query sulle tabelle specificate da Object Relational Designer.

    Aggiungere il codice seguente all'evento Load per eseguire query sulle tabelle esposte come proprietà del contesto dei dati.

    Dim db As New northwindDataContext
    
    Dim londonCusts = From cust In db.Customers
                      Where cust.City = "London"
                      Select cust
    
    DataGridView1.DataSource = londonCusts
    
  4. Premere F5 per eseguire il progetto e visualizzare i risultati.

  5. Di seguito sono riportate alcune query aggiuntive che è possibile provare:

    Dim londonCustOrders = From cust In db.Customers,
                                ord In cust.Orders
                           Where cust.City = "London"
                           Order By ord.OrderID
                           Select cust.City, ord.OrderID, ord.OrderDate
    
    DataGridView1.DataSource = londonCustOrders
    
    Dim custs = From cust In db.Customers
                Where cust.Country = "France" And
                    (cust.CompanyName.StartsWith("F") Or
                     cust.CompanyName.StartsWith("V"))
                Order By cust.CompanyName
                Select cust.CompanyName, cust.City
    
    DataGridView1.DataSource = custs
    

Vedi anche