Strumenti di LINQ to SQL in Visual Studio

LINQ to SQL è stata la prima tecnologia di mapping relazionale a oggetti rilasciata da Microsoft. Funziona bene in scenari di base e continua a essere supportato in Visual Studio, ma non è più in fase di sviluppo attivo. Usare LINQ to SQL quando si gestisce un'applicazione legacy già usata o in applicazioni semplici che usano SQL Server e non richiedono il mapping a più tabelle. In generale, le nuove applicazioni devono usare Entity Framework quando è necessario un livello mapper relazionale a oggetti.

Installare gli strumenti LINQ to SQL

In Visual Studio si creano classi LINQ to SQL che rappresentano tabelle SQL usando Progettazione relazionale oggetti (Progettazione O/R). La finestra di progettazione O/R è l'interfaccia utente per la modifica dei file con estensione dbml. La modifica dei file con estensione dbml con un'area di progettazione richiede gli strumenti LINQ to SQL che non sono installati per impostazione predefinita come parte di uno dei carichi di lavoro di Visual Studio.

Per installare gli strumenti LINQ to SQL, avviare il programma di installazione di Visual Studio, scegliere Modifica, quindi selezionare la scheda Singoli componenti e quindi selezionare LINQ to SQL Tools nella categoria Strumenti di codice.

Informazioni su O/R Designer

Progettazione O/R ha due aree distinte nell'area di progettazione: il riquadro delle entità a sinistra e il riquadro dei metodi a destra. Il riquadro delle entità rappresenta l'area di progettazione principale in cui vengono visualizzate le classi di entità, le associazioni e le gerarchie di ereditarietà. Il riquadro dei metodi rappresenta invece l'area di progettazione in cui vengono visualizzati i metodi DataContext con mapping a stored procedure e funzioni.

Progettazione O/R fornisce un'area di progettazione visiva per la creazione di classi e associazioni di entità LINQ to SQL (relazioni) basate su oggetti in un database. In altre parole, Progettazione O/R crea un modello a oggetti in un'applicazione che esegue il mapping agli oggetti in un database. Genera inoltre un oggetto fortemente tipizzato DataContext che invia e riceve dati tra le classi di entità e il database. Progettazione O/R fornisce anche funzionalità per eseguire il mapping di stored procedure e funzioni ai DataContext metodi per la restituzione di dati e il popolamento delle classi di entità. Infine, Progettazione O/R offre la possibilità di progettare relazioni di ereditarietà tra classi di entità.

Aprire la finestra di progettazione O/R

Per aggiungere un modello di entità LINQ to SQL al progetto, scegliere Progetto>Aggiungi nuovo elemento e quindi selezionare LINQ to SQL Classi dall'elenco di elementi del progetto:

Classi LINQ to SQL

Visual Studio crea un .dbml file e lo aggiunge alla soluzione. Si tratta del file di mapping XML e dei relativi file di codice.

Classi LINQ to SQL in Esplora soluzioni

Quando si seleziona il .dbml file, Visual Studio mostra l'area di progettazione O/R che consente di creare visivamente il modello. La figura seguente mostra la finestra di progettazione dopo il trascinamento delle tabelle e Orders Northwind Customers da Esplora server. Si noti la relazione tra le tabelle.

Finestra di progettazione di LINQ to SQL

Importante

O/R Designer è un semplice mapper relazionale a oggetti perché supporta solo le relazioni di mapping 1:1. In altre parole, una classe di entità può presentare solo una relazione di mapping 1:1 con una tabella o visualizzazione di database. Il mapping complesso, ad esempio il mapping di una classe di entità a una tabella unita, non è supportato; usare Entity Framework per il mapping complesso. Inoltre, la finestra di progettazione rappresenta un generatore di codice unidirezionale: pertanto, nel file di codice vengono riflesse solo le modifiche apportate all'area di progettazione. Le modifiche manuali al file di codice non vengono riflesse in Progettazione O/R. Tutte le modifiche apportate manualmente nel file di codice vengono sovrascritte durante il salvataggio della finestra di progettazione e il codice viene rigenerato. Per informazioni su come aggiungere il codice utente ed estendere le classi generate per il O/R Designer, vedere come: Estendere il codice generato da Object Relational Designer.

Creare e configurare DataContext

Dopo aver aggiunto un elemento LINQ to SQL Classes a un progetto e aver aperto O /R Designer, l'area di progettazione vuota rappresenta un elemento vuoto DataContext pronto per la configurazione. L'oggetto DataContext è configurato con le informazioni di connessione fornite dal primo elemento trascinato nell'area di progettazione. Pertanto, l'oggetto DataContext viene configurato usando le informazioni di connessione del primo elemento rilasciato nell'area di progettazione. Per altre informazioni sulla classe, vedere Metodi DataContext (O/R Designer).For more information about the DataContext class see, DataContext methods (O/R Designer)).

Creare classi di entità mappate a tabelle e viste di database

È possibile creare classi di entità mappate a tabelle e viste trascinando tabelle e viste di database da Esplora server o Esplora database in Progettazione O/R. Come indicato nella sezione precedente, l'oggetto DataContext viene configurato con le informazioni di connessione fornite dal primo elemento trascinato nell'area di progettazione. Se un elemento successivo che usa una connessione diversa viene aggiunto a Progettazione O/R, è possibile modificare la connessione per .DataContext Per altre informazioni, vedere Procedura: Creare classi LINQ to SQL mappate a tabelle e viste (Progettazione O/R).

Creare metodi DataContext che chiamano stored procedure e funzioni

È possibile creare DataContext metodi che chiamano (a cui viene eseguito il mapping) stored procedure e funzioni trascinandole da Esplora server o Esplora database in Progettazione O/R. Le stored procedure e le funzioni vengono aggiunte alla finestra di progettazione O/R come metodi di DataContext.

Nota

Quando si trascinano stored procedure e funzioni da Esplora server o Esplora database in Progettazione O/R, il tipo restituito del metodo generato DataContext varia a seconda della posizione in cui si rilascia l'elemento. Per altre informazioni, vedere Metodi DataContext (O/R Designer).For more information, see DataContext methods (O/R Designer)).

Configurare un oggetto DataContext per l'uso di stored procedure per salvare i dati tra classi di entità e un database

Come indicato in precedenza, è possibile creare metodi DataContext che chiamano stored procedure e funzioni. Inoltre, è anche possibile assegnare stored procedure usate per il comportamento di runtime predefinito di LINQ to SQL, che esegue inserimenti, aggiornamenti ed eliminazioni. Per altre informazioni, vedere Procedura: Assegnare stored procedure per eseguire aggiornamenti, inserimenti ed eliminazioni (O/R Designer).

Ereditarietà e Object Relational Designer

Analogamente ad altri oggetti, le classi LINQ to SQL possono usare l'ereditarietà ed essere derivate da altre classi. In un database le relazioni di ereditarietà vengono create in diversi modi. O/R Designer supporta il concetto di ereditarietà a tabella singola, come viene spesso implementato nei sistemi relazionali. Per altre informazioni, vedere Procedura: Configurare l'ereditarietà tramite Progettazione O/R.

Query LINQ to SQL

Le classi di entità create da Progettazione O/R sono progettate per l'uso con LINQ (Language Integrated Query). Per altre informazioni, vedere Procedura: Eseguire una query.

Separare il codice della classe DataContext e dell'entità generato in spazi dei nomi diversi

Progettazione O/R fornisce le proprietà Spazio dei nomi contesto ed Spazio dei nomi entità in DataContext. Queste proprietà determinano lo spazio dei nomi in cui viene generato il codice delle classi di entità e DataContext. Per impostazione predefinita, tali proprietà sono vuote e le classi di entità e DataContext vengono generate nello spazio dei nomi dell'applicazione. Per generare il codice in uno spazio dei nomi diverso da quello dell'applicazione, immettere un valore nelle proprietà Context Namespace e/o Entity Namespace.

Contenuto di riferimento

Vedi anche