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 con complessità minime. Verrà creata una classe di entità che modella la tabella Customers nel database Northwind di esempio. Si creerà quindi una semplice query per elencare i clienti che si trovano a Londra.
Questa procedura dettagliata è orientata al codice per illustrare i concetti di LINQ to SQL. In genere, si usa Progettazione relazionale oggetti per creare il modello a oggetti.
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 usa una cartella dedicata ("c:\linqtest") per memorizzare i file. Creare questa cartella prima di iniziare la procedura dettagliata.
Questa procedura dettagliata richiede 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 nella cartella c:\linqtest.
Informazioni generali
Questa procedura dettagliata è costituita da sei attività principali:
Creazione di una soluzione LINQ to SQL in Visual Studio.
Mappatura di una classe su una tabella di database.
Attribuire proprietà sulla classe per rappresentare le colonne del database.
Specificare la connessione al database Northwind.
Creazione di una query semplice da eseguire sul database.
Esecuzione della query e osservazione dei risultati.
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
Nel menu File
fare clic su Nuovo progetto .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 LinqConsoleApp.
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.
Nella finestra di dialogo Aggiungi riferimento fare clic su .NET, scorrere fino a e fare clic su System.Windows.Forms, quindi fare clic su OK.
Questo assembly, che supporta la finestra di dialogo nella guida passo passo, viene aggiunto al progetto.
Aggiungere le seguenti direttive sopra
Module1
.Imports System.Data.Linq Imports System.Data.Linq.Mapping Imports System.Windows.Forms
Mappatura di una classe su una tabella di database
In questo passaggio viene creata una classe e ne viene eseguito il mapping a una tabella di database. Tale classe è definita classe di entità. Si noti che il mapping viene eseguito semplicemente aggiungendo l'attributo TableAttribute . La Name proprietà specifica il nome della tabella nel database.
Per creare una classe di entità ed eseguirne il mapping a una tabella di database
Digitare o incollare il codice seguente in Module1.vb immediatamente sopra
Sub Main
:<Table(Name:="Customers")> _ Public Class Customer End Class
Definizione delle proprietà della classe per rappresentare le colonne del database
In questo passaggio vengono eseguite diverse attività.
Usi l'attributo ColumnAttribute per designare le proprietà
CustomerID
eCity
nella classe di entità come rappresentanti delle colonne nella tabella del database.Disegni la proprietà
CustomerID
per rappresentare una colonna chiave primaria nel database.Si designano i campi
_CustomerID
e_City
per l'archiviazione privata. LINQ to SQL può quindi archiviare e recuperare i valori direttamente, anziché usare funzioni di accesso pubbliche che potrebbero includere la logica di business.
Per rappresentare le caratteristiche di due colonne di database
Digitare o incollare il codice seguente in Module1.vb subito prima di
End Class
:Private _CustomerID As String <Column(IsPrimaryKey:=True, Storage:="_CustomerID")> _ Public Property CustomerID() As String Get Return Me._CustomerID End Get Set(ByVal value As String) Me._CustomerID = value End Set End Property Private _City As String <Column(Storage:="_City")> _ Public Property City() As String Get Return Me._City End Get Set(ByVal value As String) Me._City = value End Set End Property
Specificare la connessione al database Northwind
In questo passaggio si usa un DataContext oggetto per stabilire una connessione tra le strutture di dati basate su codice e il database stesso. DataContext è il canale principale tramite il quale si recuperano oggetti dal database e si inviano modifiche.
Si dichiara anche un oggetto Table(Of Customer)
che funge da tabella logica e tipizzata per le query sulla tabella Clienti nel database. Queste query verranno create ed eseguite nei passaggi successivi.
Per specificare la connessione al database
Digitare o incollare il codice seguente nel
Sub Main
metodo .Si noti che si presuppone che il
northwnd.mdf
file si trova nella cartella linqtest. Per altre informazioni, vedere la sezione Prerequisiti più indietro in questa procedura dettagliata.' Use a connection string. Dim db As New DataContext _ ("c:\linqtest\northwnd.mdf") ' Get a typed table to run queries. Dim Customers As Table(Of Customer) = _ db.GetTable(Of Customer)()
Creazione di una query semplice
In questo passaggio viene creata una query per individuare i clienti nella tabella Clienti del database che si trovano a Londra. Il codice della query in questo passaggio descrive semplicemente la query. Non lo esegue. Questo approccio è noto come esecuzione posticipata. Per altre informazioni, vedere Introduzione alle query LINQ (C#).
Verrà inoltre generato un output del log per visualizzare i comandi SQL generati da LINQ to SQL. Questa funzionalità di registrazione (che usa Log) è utile per il debug e per determinare che i comandi inviati al database rappresentano accuratamente la query.
Per creare una query semplice
Digitare o incollare il codice seguente nel
Sub Main
metodo dopo laTable(Of Customer)
dichiarazione:' Attach the log to show generated SQL in a console window. db.Log = Console.Out ' Query for customers in London. Dim custQuery = _ From cust In Customers _ Where cust.City = "London" _ Select cust
Esecuzione della query
In questo passaggio si esegue effettivamente la query. Le espressioni di query create nei passaggi precedenti non vengono valutate fino a quando non sono necessari i risultati. Quando si inizia l'iterazione For Each
, viene eseguito un comando SQL sul database e gli oggetti vengono materializzati.
Per eseguire la query
Digitare o incollare il codice seguente alla fine del
Sub Main
metodo (dopo la descrizione della query):' Format the message box. Dim msg As String = "", title As String = "London customers:", _ response As MsgBoxResult, style As MsgBoxStyle = _ MsgBoxStyle.Information ' Execute the query. For Each custObj In custQuery msg &= String.Format(custObj.CustomerID & vbCrLf) Next ' Display the results. response = MsgBox(msg, style, title)
Premere F5 per eseguire il debug dell'applicazione.
Annotazioni
Se l'applicazione genera un errore di runtime, vedere la sezione Risoluzione dei problemi di Learning by Walkthroughs.
Nella finestra di messaggio viene visualizzato un elenco di sei clienti. Nella finestra Console viene visualizzato il codice SQL generato.
Fare clic su OK per chiudere la finestra di messaggio.
L'applicazione viene chiusa.
Scegliere Save All (Salva tutti) dal menu File.
Questa applicazione sarà necessaria se si continua con la procedura dettagliata successiva.
Passaggi successivi
L'argomento Procedura dettagliata: Esecuzione di query tra relazioni (Visual Basic) continua dove termina questa procedura dettagliata. L'esempio Query tra relazioni illustra come LINQ to SQL può eseguire query su più tabelle, in modo simile alle operazioni di join in un database relazionale.
Per eseguire la procedura dettagliata "Querying Across Relationships", assicurarsi di salvare la soluzione per la procedura dettagliata appena completata, che è un prerequisito.