Procedura: modificare dati in un database utilizzando LINQ (Visual Basic)

Le query LINQ (Language Integrated Query) semplificano l'accesso alle informazioni sul database e la modifica dei valori nel database.

Nell'esempio seguente viene illustrato come creare una nuova applicazione che recupera e aggiorna le informazioni in 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.

Per creare una connessione a un database

  1. In Visual Studio aprire Esplora server/Esplora database facendo clic sul menu Visualizza e quindi selezionare Esplora server/Esplora database.

  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 con 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 le tabelle per l'esecuzione di query e la modifica nella finestra di progettazione

  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.

    La finestra di progettazione crea un nuovo oggetto Customer per il progetto.

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

  4. Salvare il progetto.

Per aggiungere il codice per modificare il database e visualizzare i risultati

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

  2. Quando sono state aggiunte tabelle a Object Relational Designer, la finestra di progettazione ha aggiunto un oggetto DataContext al progetto. Questo oggetto contiene il codice che è possibile usare per accedere alla tabella Customers. Contiene anche il codice che definisce un oggetto Customer locale e una raccolta Customers per la 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 dell'oggetto DataContext nel codice ed eseguire query e modificare la raccolta Customers specificata da Object Relational Designer. Le modifiche apportate alla raccolta Customers non si riflettono nel database finché non vengono inviate chiamando il metodo SubmitChanges dell'oggetto DataContext.

    Fare doppio clic sul modulo Windows Form, Form1, per aggiungere codice all'evento Load per eseguire query sulla tabella Customers esposta come proprietà dell'oggetto DataContext. Aggiungere il codice seguente:

    Private db As northwindDataContext
    
    Private Sub Form1_Load(ByVal sender As System.Object,
                           ByVal e As System.EventArgs
                          ) Handles MyBase.Load
      db = New northwindDataContext()
    
      RefreshData()
    End Sub
    
    Private Sub RefreshData()
      Dim customers = From cust In db.Customers
                      Where cust.City(0) = "W"
                      Select cust
    
      DataGridView1.DataSource = customers
    End Sub
    
  3. Dalla Casella degli strumenti trascinare tre controlli Button nel modulo. Selezionare il primo controllo Button. Nella finestra Proprietà impostare il valore di Name del controllo Button su AddButton e il valore di Text su Add. Selezionare il secondo pulsante e impostare la proprietà Name su UpdateButton e la proprietà Text su Update. Selezionare il terzo pulsante e impostare la proprietà Name su DeleteButton e la proprietà Text su Delete.

  4. Fare doppio clic sul pulsante Aggiungi per aggiungere il codice all'evento Click. Aggiungere il codice seguente:

    Private Sub AddButton_Click(ByVal sender As System.Object,
                                ByVal e As System.EventArgs
                               ) Handles AddButton.Click
      Dim cust As New Customer With {
        .City = "Wellington",
        .CompanyName = "Blue Yonder Airlines",
        .ContactName = "Jill Frank",
        .Country = "New Zealand",
        .CustomerID = "JILLF"}
    
      db.Customers.InsertOnSubmit(cust)
    
      Try
        db.SubmitChanges()
      Catch
        ' Handle exception.
      End Try
    
      RefreshData()
    End Sub
    
  5. Fare doppio clic sul pulsante Aggiorna per aggiungere il codice all'evento Click. Aggiungere il codice seguente:

    Private Sub UpdateButton_Click(ByVal sender As System.Object, _
                                   ByVal e As System.EventArgs
                                  ) Handles UpdateButton.Click
      Dim updateCust = (From cust In db.Customers
                        Where cust.CustomerID = "JILLF").ToList()(0)
    
      updateCust.ContactName = "Jill Shrader"
      updateCust.Country = "Wales"
      updateCust.CompanyName = "Red Yonder Airlines"
      updateCust.City = "Cardiff"
    
      Try
        db.SubmitChanges()
      Catch
        ' Handle exception.
      End Try
    
      RefreshData()
    End Sub
    
  6. Fare doppio clic sul pulsante Elimina per aggiungere il codice all'evento Click. Aggiungere il codice seguente:

    Private Sub DeleteButton_Click(ByVal sender As System.Object, _
                                   ByVal e As System.EventArgs
                                  ) Handles DeleteButton.Click
      Dim deleteCust = (From cust In db.Customers
                        Where cust.CustomerID = "JILLF").ToList()(0)
    
      db.Customers.DeleteOnSubmit(deleteCust)
    
      Try
        db.SubmitChanges()
      Catch
        ' Handle exception.
      End Try
    
      RefreshData()
    End Sub
    
  7. Premere F5 per eseguire il progetto. Fare clic su Aggiungi per aggiungere un nuovo record. Fare clic su Aggiorna per modificare il nuovo record. Fare clic su Elimina per eliminare il nuovo record.

Vedi anche