Condividi tramite


Strumenti 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 di mapping relazionale a oggetti.

Installare gli strumenti LINQ to SQL

In Visual Studio si creano classi LINQ to SQL che rappresentano le tabelle SQL usando Object Relational Designer (O/R Designer). La finestra di progettazione O/R è l'interfaccia utente per la modifica dei file .dbml. La modifica dei file .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 Componenti Singoli e quindi selezionare gli Strumenti LINQ to SQL nella categoria Strumenti di Codice.

Informazioni su O/R Designer

Il Designer O/R ha due aree distinte sulla sua superficie di progettazione: il riquadro delle entità a sinistra e il riquadro dei metodi a destra. Il riquadro delle entità è l'area di progettazione principale che visualizza le classi di entità, le associazioni e le gerarchie di ereditarietà. Il riquadro dei metodi è l'area di progettazione che visualizza i metodi DataContext di cui viene eseguito il mapping a stored procedure e funzioni.

Il O/R Designer fornisce un'area di progettazione visiva per la creazione di classi di entità LINQ to SQL e associazioni (relazioni) basate su oggetti in un database. In altre parole, Designer O/R crea un modello a oggetti in un'applicazione che mappa agli oggetti in un database. Genera inoltre un DataContext fortemente tipizzato che invia e riceve dati tra le classi di entità e il database. Il designer O/R fornisce anche funzionalità per associare stored procedure e funzioni ai metodi DataContext per restituire i dati e popolare le classi di entità. Infine, il progettista O/R offre la possibilità di progettare le relazioni di ereditarietà tra le 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 elementoe quindi selezionare classi LINQ to SQL dall'elenco di elementi del progetto:

screenshot che mostra le classi LINQ to SQL.

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

screenshot che mostra le classi LINQ to SQL in Esplora soluzioni.

Quando si seleziona il file .dbml, Visual Studio visualizza l'area di progettazione O/R che consente di creare in modo visivo il modello. La figura seguente mostra la finestra di progettazione dopo che le tabelle Customers Northwind e Orders sono state trascinate da Esplora Server . Si noti la relazione tra le tabelle.

Screenshot che mostra il LINQ to SQL Designer.

Importante

Il Designer O/R è un semplice object-relational mapper perché supporta solo mappature 1:1. In altre parole, una classe di entità può avere solo una relazione di mapping 1:1 con una tabella o una vista 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, il progettista è un generatore di codice unidirezionale. Ciò significa che solo le modifiche apportate all'area di progettazione vengono riflesse nel file di codice. Le modifiche manuali al file di codice non si riflettono nel Designer O/R . Qualsiasi modifica apportata manualmente nel file di codice viene sovrascritta quando la progettazione viene salvata e il codice viene rigenerato. Per informazioni su come aggiungere codice utente ed estendere le classi generate dalla finestra di progettazione O/R , vedere Procedura: Estendere il codice generato da O/R Designer.

Creare e configurare DataContext

Dopo aver aggiunto un elemento LINQ to SQL Classes a un progetto e aprire O/R Designer, l'area di progettazione vuota rappresenta un DataContext vuoto pronto per la configurazione. Il DataContext viene configurato con le informazioni di connessione fornite dal primo elemento trascinato sulla superficie di progettazione. Pertanto, il DataContext viene configurato utilizzando le informazioni di connessione dal primo elemento che è stato rilasciato nell'area di progettazione. Per altre informazioni sulla classe DataContext, vedere metodi DataContext (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 nella Progettazione O/R. Come indicato nella sezione precedente, il 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 alla finestra di progettazione O/R , è possibile modificare la connessione per l'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 (vengono mappati a) stored procedure e funzioni trascinandoli da Esplora Server o Esplora Database nella finestra di progettazione O/R . Le stored procedure e le funzioni vengono aggiunte al di progettazione O/R come metodi del DataContext.

Nota

Quando si trascinano stored procedure e funzioni da Server Explorer o Esplora Database sul Designer 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).

Configurare un oggetto DataContext per utilizzare stored procedure per salvare dati tra le classi di entità e un database

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

Ereditarietà e progettazione O/R

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. La progettazione O/R supporta il concetto di ereditarietà a tabella singola, come viene spesso implementato nei sistemi relazionali. Per ulteriori informazioni, vedere Procedura: Configurare l'ereditarietà tramite l'uso di Progettazione O/R.

Query LINQ to SQL

Le classi di entità create dal progettista O/R sono progettate per l'uso con LINQ (Language Integrated Query) . Per ulteriori informazioni, vedere Come eseguire una query per informazioni.

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

Il Progettista O/R fornisce le proprietà spazio dei nomi del contesto e spazio dei nomi delle entità sul DataContext. Queste proprietà determinano lo spazio dei nomi in cui vengono generati il DataContext e il codice della classe dell'entità. Per impostazione predefinita, queste proprietà sono vuote e le DataContext e le classi di entità vengono generate nello spazio dei nomi dell'applicazione. Per generare il codice in uno spazio dei nomi diverso da quello dell'applicazione, inserire un valore nelle proprietà "Namespace del Contesto" e/o "Namespace delle Entità".

Contenuto di riferimento

Vedere anche