Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questa procedura dettagliata fornisce uno scenario LINQ to SQL end-to-end fondamentale per l'aggiunta, la modifica e l'eliminazione di dati in un database. Si userà una copia del database Northwind di esempio per aggiungere un cliente, modificare il nome di un cliente ed eliminare un ordine.
Annotazioni
Il computer potrebbe visualizzare nomi o percorsi diversi per alcuni degli elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti. L'edizione di Visual Studio disponibile e le impostazioni usate determinano questi elementi. Per altre informazioni, vedere Personalizzazione dell'IDE.
Questa procedura dettagliata è stata scritta usando Le impostazioni di sviluppo di Visual Basic.
Prerequisiti
Questa procedura dettagliata richiede quanto segue:
Questa procedura dettagliata usa una cartella dedicata ("c:\linqtest2") per archiviare i file. Creare questa cartella prima di iniziare la procedura dettagliata.
Il database di esempio Northwind.
Se questo database non è disponibile nel computer di sviluppo, è possibile scaricarlo dal sito di download Microsoft. Per istruzioni, consultare Scaricare i database di esempio. Dopo aver scaricato il database, copiare il file northwnd.mdf nella cartella c:\linqtest2.
File di codice Visual Basic generato dal database Northwind.
È possibile generare questo file usando Progettazione relazionale oggetti o lo strumento SQLMetal. Questa procedura dettagliata è stata scritta usando lo strumento SQLMetal con la riga di comando seguente:
sqlmetal /code:"c:\linqtest2\northwind.vb" /language:vb "C:\linqtest2\northwnd.mdf" /pluralize
Per altre informazioni, vedere SqlMetal.exe (strumento di generazione del codice).
Informazioni generali
Questa 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 cliente.
Modifica del nome del contatto di un cliente.
Eliminazione di un ordine.
Invio di queste modifiche al database Northwind.
Creazione di una soluzione LINQ to SQL
In questa prima attività si crea una soluzione di Visual Studio contenente i riferimenti necessari per compilare ed eseguire un progetto LINQ to SQL.
Per creare una soluzione LINQ to SQL
Scegliere Nuovo progetto dal menu File di Visual Studio.
Nel riquadro Tipi di progetto della finestra di dialogo Nuovo progetto fare clic su Visual Basic.
Nel riquadro Modelli fare clic su Applicazione console.
Nella casella Nome digitare LinqDataManipulationApp.
Fare clic su OK.
Aggiunta di riferimenti e direttive LINQ
Questa procedura dettagliata utilizza assembly che potrebbero non essere installati di default nel tuo progetto. Se System.Data.Linq non è elencato come riferimento nel progetto (fare clic su Mostra tutti i file in Esplora soluzioni ed espandere il nodo Riferimenti ), aggiungerlo, come illustrato nei passaggi seguenti.
Per aggiungere System.Data.Linq
In Esplora soluzioni fare clic con il pulsante destro del mouse su Riferimenti e quindi scegliere Aggiungi riferimento.
Nella finestra di dialogo Aggiungi riferimento fare clic su .NET, fare clic sull'assembly System.Data.Linq e quindi su OK.
Il componente viene aggiunto al progetto.
Nell'editor di codice aggiungere le direttive seguenti sopra Module1:
Imports System.Data.Linq Imports System.Data.Linq.Mapping
Aggiunta del file di codice Northwind al progetto
Questi passaggi presuppongono che sia stato usato lo strumento SQLMetal per generare un file di codice dal database di esempio Northwind. Per altre informazioni, vedere la sezione Prerequisiti più indietro in questa procedura dettagliata.
Per aggiungere il file di codice northwind al progetto
Nel menu progetto fare clic su Aggiungi elemento esistente.
Nella finestra di dialogo Aggiungi elemento esistente passare a c:\linqtest2\northwind.vb e quindi fare clic su Aggiungi.
Il file northwind.vb viene aggiunto al progetto.
Configurazione della connessione al database
Prima di tutto, testare la connessione al database. Si noti in particolare che il nome del database, Northwnd, non ha caratteri i. Se si generano errori nei passaggi successivi, esaminare il file northwind.vb per determinare come viene digitata la classe parziale Northwind.
Per configurare e testare la connessione al database
Digitare o incollare il codice seguente 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()Premere F5 per testare l'applicazione a questo punto.
Verrà visualizzata una finestra della console .
Chiudere l'applicazione premendo INVIO nella finestra della console oppure scegliendo Arresta debug dal menu Debug di Visual Studio.
Creazione di una nuova entità
La creazione di una nuova entità è semplice. È possibile creare oggetti , ad esempio Customer, usando la New parola chiave .
In questa e nelle sezioni seguenti si apportano modifiche solo alla cache locale. Nessuna modifica viene inviata al database fino a quando non si chiama SubmitChanges verso la fine di questa procedura dettagliata.
Per aggiungere un nuovo oggetto entità Cliente
Creare un nuovo
Customeroggetto aggiungendo il codice seguente primaConsole.ReadLineinSub 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) NextPremere F5 per eseguire il debug della soluzione.
I risultati visualizzati nella finestra della console sono i seguenti:
Customers matching CA before insert:Customer ID: CACTUCustomer ID: RICARSi noti che la nuova riga non viene visualizzata nei risultati. I nuovi dati non sono ancora stati inviati al database.
Premere INVIO nella finestra della console per arrestare il debug.
Aggiornamento di un'entità
Nei passaggi seguenti si recupererà un Customer oggetto e ne modificherà una delle proprietà.
Per modificare il nome di un cliente
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à
Usando lo stesso oggetto cliente, è possibile eliminare il primo ordine.
Nel codice seguente viene mostrato come separare le relazioni tra le righe e come eliminare una riga dal database.
Per eliminare una riga
Aggiungere il codice seguente appena 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 sono solo locali e non verranno visualizzate nei risultati della query.
Per inviare modifiche al database
Inserire il codice seguente appena sopra
Console.ReadLine:db.SubmitChanges()Inserire il codice seguente (dopo
SubmitChanges) per visualizzare gli effetti precedenti e successivi dell'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) NextPremere F5 per eseguire il debug della soluzione.
La finestra della console viene visualizzata 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: RICARPremere INVIO nella finestra della console per arrestare il debug.
Annotazioni
Dopo aver aggiunto il nuovo cliente inviando le modifiche, non è possibile eseguire di nuovo questa soluzione così come è, perché non è possibile aggiungere di nuovo lo stesso cliente così come è. Per eseguire di nuovo la soluzione, modificare il valore dell'ID cliente da aggiungere.