Strumento per la generazione del codice (SqlMetal.exe)
Aggiornamento: novembre 2007
Lo strumento della riga di comando SqlMetal genera codice e mapping per il componente LINQ to SQL di .NET Framework. Mediante l'applicazione delle opzioni riportate più avanti in questo argomento è possibile utilizzare SqlMetal per eseguire diverse azioni, fra cui:
A partire da un database, generare codice sorgente e attributi di mapping oppure un file di mapping.
A partire da un database, generare un file DBML (Database Markup Language) intermedio da personalizzare.
A partire da un file con estensione dbml, generare codice e attributi di mapping oppure un file di mapping.
Per impostazione predefinita, il percorso del file SQLMetal è drive:\Programmi\Microsoft SDKs\Windows\vn.nn\bin.
Nota
Gli sviluppatori che utilizzano Visual Studio possono inoltre utilizzare Object Relational Designer per generare classi di entità. Quando si utilizzano database di grandi dimensioni, l'approccio basato sulla riga di comando rappresenta la scelta più adeguata. In quanto strumento della riga di comando, SqlMetal può essere utilizzato in un processo di compilazione. Progettazione relazionale oggetti
Progettazione relazionale oggetti
Progettazione relazionale oggetti
sqlmetal [options] [<input file>]
Opzioni
Per visualizzare l'elenco di opzioni più aggiornato, digitare sqlmetal /? al prompt dei comandi nel percorso di installazione.
Opzioni di connessione
Opzione |
Descrizione |
---|---|
/server:<nome> |
Consente di specificare il nome del server database. |
/database:<nome> |
Consente di specificare il catalogo del database contenuto nel server. |
/user:<nome> |
Consente di specificare l'ID utente di accesso. Valore predefinito: Usa autenticazione di Windows. |
/password:<password> |
Consente di specificare la password di accesso. Valore predefinito: Usa autenticazione di Windows. |
/conn:<stringa di connessione> |
Consente di specificare la stringa di connessione al database. Non può essere utilizzata con le opzioni /server, /database, /user o /password. Non includere il nome file nella stringa di connessione. Aggiungere invece il nome file alla riga di comando come file di input. Nella riga seguente, ad esempio, viene specificato "c:\northwnd.mdf" come file di input: sqlmetal /code:"c:\northwind.cs" /language:csharp "c:\northwnd.mdf". |
/timeout:<secondi> |
Consente di specificare il valore di timeout quando SqlMetal accede al database. Valore predefinito: 0 (ovvero, nessun limite di tempo). |
Opzioni di estrazione
Opzione |
Descrizione |
---|---|
/views |
Consente di estrarre visualizzazioni database. |
/functions |
Consente di estrarre funzioni di database. |
/sprocs |
Consente di estrarre stored procedure. |
Opzioni di output
Opzione |
Descrizione |
---|---|
/dbml[:file] |
Consente di inviare l'output come file in formato dbml. Non può essere utilizzata con l'opzione /map. |
/code[:file] |
Consente di inviare l'output come codice sorgente. Non può essere utilizzata con l'opzione /dbml. |
/map[:file] |
Consente di generare un file di mapping XML anziché gli attributi. Non può essere utilizzata con l'opzione /dbml. |
Varie
Opzione |
Descrizione |
---|---|
/language:<linguaggio> |
Consente di specificare il linguaggio del codice sorgente. Valori validi di <linguaggio>: vb, csharp. Valore predefinito: derivato dall'estensione nel nome file del codice. |
/namespace:<nome> |
Consente di specificare lo spazio dei nomi del codice generato. Valore predefinito: nessuno spazio dei nomi. |
/context:<tipo> |
Consente di specificare il nome della classe del contesto dati. Valore predefinito: derivato dal nome del database. |
/entitybase:<tipo> |
Consente di specificare la classe di base delle classi di entità nel codice generato. Valore predefinito: le entità non dispongono di classe base. |
/pluralize |
Rende automaticamente plurali o singolari i nomi delle classi e dei membri. Questa opzione è disponibile solo nella versione in inglese degli Stati Uniti. |
/serialization:<opzione> |
Consente di generare classi serializzabili. Valori validi di <opzione>: None, Unidirectional. Valore predefinito: None. Per ulteriori informazioni, vedere Serializzazione (LINQ to SQL). |
File di input
Opzione |
Descrizione |
---|---|
<input file> |
Consente di specificare un file SQL Server Express con estensione mdf, un file SQL Server Compact 3.5 con estensione sdf oppure un file intermedio con estensione dbml. |
Note
Il funzionamento di SqlMetal prevede di fatto due passaggi:
Estrazione dei metadati del database in un file con estensione dbml.
Generazione di un file di output di codice.
Le opzioni della riga di comando, se utilizzate correttamente, consentono di creare codice sorgente Visual Basic o C# oppure un file di mapping XML.
Per estrarre i metadati da un file con estensione mdf è necessario aggiungere il nome di tale file in coda a tutte le altre opzioni specificate.
Se l'opzione /server non viene specificata, viene utilizzata l'opzione localhost/sqlexpress.
Microsoft SQL Server 2005 genera un'eccezione se almeno una delle condizioni seguenti è vera:
SqlMetal tenta di estrarre una stored procedure che chiama se stessa.
Il livello di nidificazione di una stored procedure, di una funzione o di una visualizzazione è maggiore di 32.
SqlMetal rileva questa eccezione e la segnala come avviso.
Per specificare un nome di file di input, aggiungere il nome alla riga di comando come file di input. L'inserimento del nome file nella stringa di connessione (tramite l'opzione /conn) non è supportato.
Esempi
Generazione di un file con estensione dbml che contiene metadati SQL estratti:
sqlmetal /server:server /database:northwind /dbml:meta.dbml
Generazione di un file con estensione dbml che contiene metadati SQL estratti da un file con estensione mdf tramite SQL Server Express:
sqlmetal /dbml:meta.dbml filedb.mdf
Generazione di un file con estensione dbml che contiene metadati SQL estratti da SQL Server Express:
sqlmetal /server:.\sqlexpress /dbml:meta.dbml /database:northwind
Generazione di codice sorgente a partire da un file di metadati con estensione dmbl:
sqlmetal /namespace:nwind /code:nwind.cs /language:csharp metal.dbml
Generazione di codice sorgente direttamente da metadati SQL:
sqlmetal /server:server /database:northwind /namespace:nwind /code:nwind.cs /language:csharp
Nota
Quando si utilizza l'opzione /pluralize con il database di esempio Northwind, si verifica il comportamento seguente. Quando SqlMetal crea nomi di tipo riga nelle tabelle, i relativi nomi sono al singolare. Quando crea proprietà DataContext nelle tabelle, i relativi nomi sono invece al plurale. Per coincidenza, i nomi delle tabelle contenute nel database di esempio Northwind sono già al plurale. Pertanto, l'opzione di pluralizzazione di fatto non viene utilizzata. Benché in genere le tabelle di database vengano denominate al singolare, nella maggior parte dei casi gli insiemi .NET vengono denominati al plurale.
Vedere anche
Attività
Procedura: generare il modello a oggetti in Visual Basic o C# (LINQ to SQL)
Concetti
Generazione di codice in LINQ to SQL