Procedura dettagliata: utilizzo delle sole stored procedure (Visual Basic) (LINQ to SQL)
In questa procedura dettagliata viene descritto uno scenario LINQ to SQL end-to-end di base per l'accesso ai dati utilizzando solo stored procedure. Questo approccio viene spesso è utilizzato dagli amministratori di database per limitare l'accesso all'archivio dati.
Nota |
---|
È inoltre possibile utilizzare stored procedure nelle applicazioni LINQ to SQL per eseguire l'override del comportamento predefinito, specialmente per i processi Create, Update e Delete.Per ulteriori informazioni, vedere Personalizzazione delle operazioni Insert, Update e Delete (LINQ to SQL). |
Per le finalità di questa procedura dettagliata si utilizzeranno due metodi di cui è stato eseguito il mapping alle stored procedure CustOrdersDetail e CustOrderHist nel database di esempio Northwind. Il mapping viene applicato quando si esegue lo strumento della riga di comando SqlMetal per generare un file di Visual Basic. Per ulteriori informazioni, vedere la sezione successiva relativa ai prerequisiti.
Questa procedura dettagliata non si basa su Object Relational Designer. Gli sviluppatori che utilizzano Visual Studio possono inoltre utilizzare O/R Designer per implementare la funzionalità delle stored procedure. Per ulteriori informazioni, vedere Progettazione relazionale oggetti e Progettazione relazionale oggetti e Progettazione relazionale oggetti.
Nota |
---|
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:\linqtest3") 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:\linqtest3.
Un file di codice Visual Basic generato dal database Northwind.
Questa procedura dettagliata è stata scritta utilizzando lo strumento SqlMetal con la riga di comando seguente:
sqlmetal /code:"c:\linqtest3\northwind.vb" /language:vb "c:\linqtest3\northwnd.mdf" /sprocs /functions /pluralize
Per ulteriori informazioni, vedere SqlMetal.exe (strumento per la generazione del codice).
Panoramica
La procedura dettagliata è costituita da sei attività principali:
Impostazione della soluzione LINQ to SQL in Visual Studio.
Aggiunta dell'assembly System.Data.Linq al progetto.
Aggiunta del file di codice del database al progetto.
Creazione di una connessione al database.
Impostazione dell'interfaccia utente.
Esecuzione e test dell'applicazione.
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
Scegliere Nuovo progetto dal menu File di Visual Studio.
Nel riquadro Tipi progetto della finestra di dialogo Nuovo progetto espandere Visual Basic, quindi fare clic su Windows
Nel riquadro Modelli fare clic su Applicazione Windows Form.
Digitare SprocOnlyApp nella casella Nome.
Scegliere OK.
Verrà aperto Progettazione Windows Form.
Aggiunta del riferimento all'assembly LINQ to SQL
L'assembly LINQ to SQL non è incluso nel modello Applicazione Windows Form standard. Sarà pertanto necessario aggiungere l'assembly manualmente, come descritto nei passaggi seguenti:
Per aggiungere System.Data.Linq.dll
In Esplora soluzioni, scegliere Mostra tutti i file.
In Esplora soluzioni fare clic con il pulsante destro del mouse su Riferimenti, quindi scegliere Aggiungi riferimento.
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.
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
Scegliere Aggiungi elemento esistente dal menu Progetto.
Nella finestra di dialogo Aggiungi elemento esistente passare a c:\linqtest3\northwind.vb, quindi fare clic su Aggiungi.
Il file northwind.vb viene aggiunto al progetto.
Creazione di connessioni a database
In questo passaggio si definirà la connessione al database di esempio Northwind. Per questa procedura dettagliata viene utilizzato il percorso "c:\linqtest3\northwnd.mdf".
Per creare la connessione al database
In Esplora soluzioni fare clic con il pulsante destro del mouse su Form1.vb, quindi scegliere Visualizza codice.
Class Form1 verrà visualizzato nell'editor di codice.
Digitare il codice riportato di seguito nel blocco di codice Form1.
Dim db As New Northwnd("c:\linqtest3\northwnd.mdf")
Impostazione dell'interfaccia utente
In questa attività verrà creata un'interfaccia per consentire agli utenti di eseguire stored procedure per l'accesso ai dati nel database. Nell'applicazione creata con questa procedura dettagliata gli utenti potranno accedere ai dati nel database solo utilizzando le stored procedure incorporate nell'applicazione.
Per impostare l'interfaccia utente
Tornare a Progettazione Windows Form facendo clic su Form1.vb [Design].
Scegliere Casella degli strumenti dal menu Visualizza.
Verrà aperta la Casella degli strumenti.
Nota Fare clic sull'icona Nascondi automaticamente raffigurante una puntina da disegno per tenere aperta la Casella degli strumenti mentre si eseguono i passaggi rimanenti di questa sezione.
Trascinare due pulsanti, due caselle di testo e due etichette dalla casella degli strumenti in Form1.
Disporre i controlli come raffigurato nell'illustrazione. Espandere Form1 per consentire l'adattamento dei controlli.
Fare clic con il pulsante destro del mouse su Label1, quindi scegliere Proprietà.
Modificare la proprietà Text da Label1 in Enter OrderID:.
Allo stesso modo per Label2 modificare la proprietà Text da Label2 in Enter CustomerID:.
Modificare inoltre la proprietà Text per Button1 in Order Details.
Modificare la proprietà Text per Button2 in Order History.
Ampliare i controlli pulsante in modo che tutto il testo sia visibile.
Per gestire i clic sui pulsanti
Fare doppio clic su Order Details in Form1 per creare il gestore eventi Button1 e aprire l'editor di codice.
Digitare il codice riportato di seguito nel gestore eventi Button1:
' Declare a variable to hold the contents of ' TextBox1 as an argument for the stored ' procedure. Dim parm As String = TextBox1.Text ' Declare a variable to hold the results returned ' by the stored procedure. Dim custQuery = db.CustOrdersDetail(parm) ' Clear the message box of previous results. Dim msg As String = "" Dim response As MsgBoxResult ' Execute the stored procedure and store the results. For Each custOrdersDetail As CustOrdersDetailResult In custQuery msg &= custOrdersDetail.ProductName & vbCrLf Next ' Display the results. If msg = "" Then msg = "No results." End If response = MsgBox(msg) ' Clear the variables before continuing. parm = "" TextBox1.Text = ""
A questo punto fare doppio clic su Button2 nel Form1 per creare il gestore eventi Button2 e aprire l'editor di codice.
Digitare il codice riportato di seguito nel gestore eventi Button2:
' Comments in the code for Button2 are the same ' as for Button1. Dim parm As String = TextBox2.Text Dim custQuery2 = db.CustOrderHist(parm) Dim msg As String = "" Dim response As MsgBoxResult For Each custOrdHist As CustOrderHistResult In custQuery2 msg &= custOrdHist.ProductName & vbCrLf Next If msg = "" Then msg = "No results." End If response = MsgBox(msg) parm = "" TextBox2.Text = ""
Test dell'applicazione
A questo punto è possibile procedere al test dell'applicazione. Notare che il contatto con l'archivio dati è limitato alle azioni supportate dalle due stored procedure che, in questo caso, consistono nel restituire i prodotti inclusi per qualsiasi ID ordine immesso o nel restituire una cronologia dei prodotti ordinati per qualsiasi ID cliente immesso.
Per eseguire il test dell'applicazione
Premere F5 per avviare il debug.
Viene visualizzato Form1.
Nella casella Enter OrderID digitare 10249, quindi fare clic su Order Details.
I prodotti inclusi nell'ordine 10249 vengono elencati in una finestra di messaggio.
Scegliere OK per chiudere la finestra di messaggio.
Nella casella Enter CustomerID digitare ALFKI, quindi fare clic su Order History.
In una finestra di messaggio viene elencata la cronologia degli ordini per il cliente ALFKI.
Scegliere OK per chiudere la finestra di messaggio.
Nella casella Enter OrderID digitare 123, quindi fare clic su Order Details.
Viene visualizzata una finestra di messaggio con l'indicazione che non è stato trovato alcun risultato.
Scegliere OK per chiudere la finestra di messaggio.
Scegliere Termina debug dal menu Debug.
La sessione di debug viene chiusa.
Al termine delle prove è possibile scegliere Chiudi progetto nel menu File e salvare il progetto quando viene richiesto.
Passaggi successivi
Questo progetto può essere migliorato apportandovi alcune modifiche. Ad esempio, è possibile elencare le stored procedure disponibili in una casella di riepilogo, in modo che l'utente possa selezionare quella da eseguire. È inoltre possibile trasmettere l'output dei rapporti a un file di testo.
Vedere anche
Concetti
Apprendimento tramite le procedure dettagliate (LINQ to SQL)