Condividi tramite


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

Riferimenti

Riferimento al mapping esterno (LINQ to SQL)