Procedura dettagliata: modifica dei dati (Visual Basic) (LINQ to SQL)

In questa procedura dettagliata viene descritto uno scenario LINQ to SQL end-to-end di base per l'aggiunta, la modifica e l'eliminazione dei dati in un database. Si utilizzerà una copia del database di esempio Northwind per aggiungere un cliente, modificare il nome di un cliente ed eliminare un ordine.

NotaNota

Nel computer in uso è possibile che vengano visualizzati nomi o percorsi diversi per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi. Per ulteriori informazioni vedere Impostazioni di Visual Studio.

Questa procedura dettagliata è stata scritta utilizzando Impostazioni di sviluppo di Visual Basic.

Prerequisiti

Per l'esecuzione di questa procedura sono richiesti i seguenti elementi:

  • Una cartella dedicata ("c:\linqtest2") in cui inserire i file utilizzati nella procedura dettagliata. Creare la cartella prima di avviare la procedura.

  • Il database di esempio Northwind.

    Se questo database non è disponibile nel computer di sviluppo, è possibile scaricarlo dal sito di download Microsoft. Per istruzioni, vedere Download dei database di esempio (LINQ to SQL). Dopo avere scaricato il database, copiare il file northwnd.mdf nella cartella c:\linqtest2.

  • Un file di codice Visual Basic generato dal database Northwind.

    È possibile generare questo file utilizzando Object Relational Designer o lo strumento SQLMetal. Questa procedura dettagliata è stata scritta utilizzando lo strumento SQLMetal con la riga di comando seguente:

    sqlmetal /code:"c:\linqtest2\northwind.vb" /language:vb "C:\linqtest2\northwnd.mdf" /pluralize

    Per ulteriori informazioni, vedere SqlMetal.exe (strumento per la generazione del codice).

Panoramica

La procedura dettagliata è costituita da sei attività principali:

  • Creazione della soluzione LINQ to SQL in Visual Studio.

  • Aggiunta del file di codice del database al progetto.

  • Creazione di un nuovo oggetto Customer

  • Modifica del nome di contatto di un cliente.

  • Eliminazione di un ordine.

  • Invio delle modifiche al database Northwind.

Creazione di una soluzione LINQ to SQL

In questa prima attività verrà creata una soluzione Visual Studio che contiene i riferimenti necessari per compilare ed eseguire un progetto LINQ to SQL.

Per creare una soluzione LINQ to SQL

  1. Scegliere Nuovo progetto dal menu File di Visual Studio.

  2. Nella finestra di dialogo Nuovo progetto selezionare Visual Basic nel riquadro Tipi progetto.

  3. Nel riquadro Modelli fare clic su Applicazione console.

  4. Nella casella Nome digitare LinqDataManipulationApp.

  5. Scegliere OK.

Aggiunta di riferimenti e direttive LINQ

In questa procedura dettagliata vengono utilizzati assembly che potrebbero non essere installati per impostazione predefinita nel progetto. Se System.Data.Linq non viene elencato come riferimento nel progetto facendo clic su Mostra tutti i file in Esplora soluzioni ed espandendo il nodo Riferimenti, aggiungerlo come spiegato nella procedura seguente.

Per aggiungere System.Data.Linq

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse su Riferimenti, quindi scegliere Aggiungi riferimento.

  2. Nella finestra di dialogo Aggiungi riferimento fare clic su .NET, fare clic sull'assembly System.Data.Linq, quindi scegliere OK.

    L'assembly verrà aggiunto al progetto.

  3. Nell'editor di codice aggiungere le direttive riportate di seguito sopra Module1:

    Imports System.Data.Linq
    Imports System.Data.Linq.Mapping
    

Aggiunta del file di codice di Northwind al progetto

In questa procedura si presuppone che sia stato utilizzato lo strumento SQLMetal per generare un file di codice dal database di esempio Northwind. Per ulteriori informazioni, vedere la sezione precedente relativa ai prerequisiti.

Per aggiungere il file di codice di Northwind al progetto

  1. Scegliere Aggiungi elemento esistente dal menu Progetto.

  2. Nella finestra di dialogo Aggiungi elemento esistente individuare il file c:\linqtest2\northwind.vb, quindi fare clic su Aggiungi.

    Il file northwind.vb viene aggiunto al progetto.

Impostazione della connessione al database

Eseguire innanzitutto il test della connessione al database. Notare in particolare che nel nome del database, Northwnd, non è presente il carattere i. Se vengono generati errori nei passaggi successivi, esaminare il file northwind.vb per determinare come è digitata la classe parziale Northwind.

Per impostare e testare la connessione al database

  1. Digitare o incollare il codice che segue in Sub Main:

    ' Use a connection string, but connect to
    '     the temporary copy of the database.
    Dim db As New Northwnd _
        ("C:\linqtest2\northwnd.mdf")
    
    ' Keep the console window open after activity stops.
    Console.ReadLine()
    
  2. A questo punto premere F5 per eseguire il test dell'applicazione.

    Viene visualizzata una finestra Console.

    Chiudere l'applicazione premendo INVIO nella finestra Console o scegliendo Termina debug dal menu Debug di Visual Studio.

Creazione di una nuova entità

La creazione di una nuova entità è un processo semplice. È possibile creare oggetti, ad esempio Customer, utilizzando la parola chiave New.

In questa e nelle sezioni seguenti vengono apportate modifiche solo alla cache locale. Non viene inviata alcuna modifica al database finché, verso la fine di questa procedura dettagliata, non si chiamerà SubmitChanges.

Per aggiungere un nuovo oggetto dell'entità Customer

  1. Creare un nuovo oggetto Customer aggiungendo il codice riportato di seguito prima di Console.ReadLine in Sub Main:

    ' Create the new Customer object.
    Dim newCust As New Customer()
    newCust.CompanyName = "AdventureWorks Cafe"
    newCust.CustomerID = "A3VCA"
    
    ' Add the customer to the Customers table.
    db.Customers.InsertOnSubmit(newCust)
    
    Console.WriteLine("Customers matching CA before insert:")
    
    Dim custQuery = _
        From cust In db.Customers _
        Where cust.CustomerID.Contains("CA") _
        Select cust
    
    For Each cust In custQuery
        Console.WriteLine("Customer ID: " & cust.CustomerID)
    Next
    
  2. Premere F5 per eseguire il debug della soluzione.

    Di seguito sono riportati i risultati visualizzati nella finestra della console:

    Customers matching CA before insert:

    Customer ID: CACTU

    Customer ID: RICAR

    Notare che la nuova riga non è visualizzata nei risultati. I nuovi dati non sono ancora stati inviati al database.

  3. Premere INVIO nella finestra Console per terminare il debug.

Aggiornamento di un'entità

Nei passaggi seguenti si recupererà un oggetto Customer e si modificherà una delle relative proprietà.

Per modificare il nome di un oggetto Customer

  • Aggiungere il codice seguente sopra Console.ReadLine():

    Dim existingCust = _
        (From cust In db.Customers _
        Where cust.CustomerID = "ALFKI" _
        Select cust).First()
    
    ' Change the contact name of the customer.
    existingCust.ContactName = "New Contact"
    

Eliminazione di un'entità

Utilizzando lo stesso oggetto Customer, è possibile eliminare il primo ordine.

Nel codice seguente viene illustrato come interrompere le relazioni tra le righe e come eliminare una riga dal database.

Per eliminare una riga

  • Aggiungere il codice seguente sopra Console.ReadLine():

    ' Access the first element in the Orders collection.
    Dim ord0 As Order = existingCust.Orders(0)
    
    ' Access the first element in the OrderDetails collection.
    Dim detail0 As OrderDetail = ord0.OrderDetails(0)
    
    ' Display the order to be deleted.
    Console.WriteLine _
        (vbCrLf & "The Order Detail to be deleted is: OrderID = " _
        & detail0.OrderID)
    
    ' Mark the Order Detail row for deletion from the database.
    db.OrderDetails.DeleteOnSubmit(detail0)
    

Invio di modifiche al database

Il passaggio finale necessario per la creazione, l'aggiornamento e l'eliminazione di oggetti consiste nell'inviare effettivamente le modifiche al database. Senza questo passaggio le modifiche vengono applicate solo localmente e non saranno visualizzate nei risultati della query.

Per inviare le modifiche al database

  1. Inserire il codice seguente sopra Console.ReadLine:

    db.SubmitChanges()
    
  2. Inserire il codice seguente dopo SubmitChanges per mostrare gli effetti precedenti e successivi all'invio delle modifiche:

    Console.WriteLine(vbCrLf & "Customers matching CA after update:")
    Dim finalQuery = _
        From cust In db.Customers _
        Where cust.CustomerID.Contains("CA") _
        Select cust
    
    For Each cust In finalQuery
        Console.WriteLine("Customer ID: " & cust.CustomerID)
    Next
    
  3. Premere F5 per eseguire il debug della soluzione.

    Viene visualizzata la finestra di console come segue:

    Customers matching CA before update:
    Customer ID: CACTU
    Customer ID: RICAR
    
    The Order Detail to be deleted is: OrderID = 10643
    
    Customers matching CA after update:
    Customer ID: A3VCA
    Customer ID: CACTU
    Customer ID: RICAR
    
  4. Premere INVIO nella finestra Console per terminare il debug.

NotaNota

Dopo avere aggiunto il nuovo oggetto Customer mediante l'invio delle modifiche, non sarà possibile eseguire nuovamente questa soluzione così com'è, poiché non è possibile aggiungere di nuovo lo stesso oggetto Customer.Per eseguire nuovamente la soluzione, modificare il valore dell'ID dell'oggetto Customer da aggiungere.

Vedere anche

Concetti

Apprendimento tramite le procedure dettagliate (LINQ to SQL)