SqlMetal.exe (outil de génération de code)SqlMetal.exe (Code Generation Tool)

L'outil en ligne de commande SqlMetal génère le code et le mappage du composant LINQ to SQLLINQ to SQL du .NET Framework.NET Framework.The SqlMetal command-line tool generates code and mapping for the LINQ to SQLLINQ to SQL component of the .NET Framework.NET Framework. En appliquant les options qui apparaissent ultérieurement dans cette rubrique, vous pouvez ordonner à SqlMetal d'exécuter plusieurs actions différentes, dont les suivantes :By applying options that appear later in this topic, you can instruct SqlMetal to perform several different actions that include the following:

  • À partir d'une base de données, générez le code source et les attributs de mappage ou un fichier de mappage.From a database, generate source code and mapping attributes or a mapping file.

  • À partir d'une base de données, générez un fichier .dbml (database markup language) intermédiaire à des fins de personnalisation.From a database, generate an intermediate database markup language (.dbml) file for customization.

  • À partir d'un fichier .dbml, générez du code et des attributs de mappage ou un fichier de mappage.From a .dbml file, generate code and mapping attributes or a mapping file.

Cet outil est installé automatiquement avec Visual Studio.This tool is automatically installed with Visual Studio. Par défaut, ce fichier se trouve à l'emplacement suivant : drive:\Program Files\Microsoft SDKs\Windows\vn.nn\bin.By default, the file is located at drive:\Program Files\Microsoft SDKs\Windows\vn.nn\bin. Si vous n’installez pas Visual Studio, vous pouvez également obtenir le fichier SQLMetal en téléchargeant le SDK Windows.If you do not install Visual Studio, you can also get the SQLMetal file by downloading the Windows SDK.

Note

Les développeurs qui utilisent Visual Studio peuvent également utiliser Object Relational DesignerObject Relational Designer pour générer des classes d'entité.Developers who use Visual Studio can also use the Object Relational DesignerObject Relational Designer to generate entity classes. L'approche de ligne de commande est bien adaptée aux bases de données volumineuses.The command-line approach scales well for large databases. Puisque SqlMetal est un outil de ligne de commande, vous pouvez l'utiliser dans un processus de génération.Because SqlMetal is a command-line tool, you can use it in a build process.

Pour exécuter l'outil, utilisez l'invite de commandes développeur (ou l'invite de commandes Visual Studio dans Windows 7).To run the tool, use the Developer Command Prompt (or the Visual Studio Command Prompt in Windows 7). Pour plus d’informations, consultez Invites de commandes. À l’invite de commandes, tapez ce qui suit :For more information, see Command Prompts.At the command prompt, type the following:

SyntaxeSyntax

sqlmetal [options] [<input file>]  

OptionsOptions

Pour afficher la liste des options la plus récente, tapez sqlmetal /? à partir d’une invite de commandes depuis l’emplacement d’installation.To view the most current option list, type sqlmetal /? at a command prompt from the installed location.

Options de connexionConnection Options

OptionOption DescriptionDescription
/server: <nom>/server: <name> Spécifie le nom du serveur de base de données.Specifies database server name.
/database: <nom>/database: <name> Spécifie le catalogue de base de données sur le serveur.Specifies database catalog on server.
/user: <nom>/user: <name> Spécifie l'ID de connexion de l'utilisateur. Valeur par défaut : utilisez l'authentification Windows.Specifies logon user id. Default value: Use Windows authentication.
/password: <mot_de_passe>/password: <password> Spécifie le mot de passe d'ouverture de session.Specifies logon password. Valeur par défaut : utilisez l'authentification Windows.Default value: Use Windows authentication.
/conn: <chaîne_connexion>/conn: <connection string> Spécifie la chaîne de connexion de base de données.Specifies database connection string. Ne peut pas être utilisée avec les options /server, /database, /userou /password .Cannot be used with /server, /database, /user, or /password options.

N'inclut pas le nom de fichier dans la chaîne de connexion.Do not include the file name in the connection string. Ajoutez plutôt le nom de fichier à la ligne de commande comme fichier d'entrée.Instead, add the file name to the command line as the input file. Par exemple, la ligne suivante spécifie "c:\northwnd.mdf" comme fichier d’entrée : sqlmetal /code:"c:\northwind.cs" /language:csharp "c:\northwnd.mdf".For example, the following line specifies "c:\northwnd.mdf" as the input file: sqlmetal /code:"c:\northwind.cs" /language:csharp "c:\northwnd.mdf".
/timeout: <secondes>/timeout: <seconds> Spécifie la valeur du délai d'attente lorsque SqlMetal accède à la base de données.Specifies time-out value when SqlMetal accesses the database. Valeur par défaut : 0 (à savoir, aucune limite de temps).Default value: 0 (that is, no time limit).

Options d'extractionExtraction options

OptionOption DescriptionDescription
/views/views Extrait des vues de base de données.Extracts database views.
/functions/functions Extrait des fonctions de base de données.Extracts database functions.
/sprocs/sprocs Extrait des procédures stockées.Extracts stored procedures.

Options de sortieOutput options

OptionOption DescriptionDescription
/dbml [:file]/dbml [:file] Envoie la sortie au format .dbml.Sends output as .dbml. Ne peut pas être utilisée avec l’option /map .Cannot be used with /map option.
/code [:file]/code [:file] Envoie la sortie sous la forme de code source.Sends output as source code. Ne peut pas être utilisée avec l’option /dbml .Cannot be used with /dbml option.
/map [:file]/map [:file] Génère un fichier de mappage XML plutôt que des attributs.Generates an XML mapping file instead of attributes. Ne peut pas être utilisée avec l’option /dbml .Cannot be used with /dbml option.

DiversMiscellaneous

OptionOption DescriptionDescription
/language: <langage>/language: <language> Spécifie le langage du code source.Specifies source code language.

<langage> valide : vb, csharp.Valid <language>: vb, csharp.

Valeur par défaut : Dérivé de l’extension du nom du fichier de code.Default value: Derived from extension on code file name.
/namespace: <nom>/namespace: <name> Spécifie l'espace de noms du code généré.Specifies namespace of the generated code. Valeur par défaut : Aucun espace de noms.Default value: no namespace.
/context: <type>/context: <type> Spécifie le nom de la classe du contexte de données.Specifies name of data context class. Valeur par défaut : Dérivé du nom de la base de données.Default value: Derived from database name.
/entitybase: <type>/entitybase: <type> Spécifie la classe de base des classes d'entité du code généré.Specifies the base class of the entity classes in the generated code. Valeur par défaut : Les entités n'ont pas de classe de base.Default value: Entities have no base class.
/pluralize/pluralize Pluralise ou singularise automatiquement des noms de membre et de classe.Automatically pluralizes or singularizes class and member names.

Cette option est disponible uniquement dans la version Anglais américain.This option is available only in the U.S. English version.
/serialization: <option>/serialization: <option> Génère des classes sérialisables.Generates serializable classes.

<option> valide : None, Unidirectional.Valid <option>: None, Unidirectional. Valeur par défaut : Aucun.Default value: None.

Pour plus d’informations, consultez Sérialisation.For more information, see Serialization.

Fichier d'entréeInput File

OptionOption DescriptionDescription
<fichier_entrée><input file> Spécifie un fichier SQL Server Express .mdf, un fichier SQL Server Compact 3.5SQL Server Compact 3.5 .sdf, ou un fichier intermédiaire .dbml.Specifies a SQL Server Express .mdf file, a SQL Server Compact 3.5SQL Server Compact 3.5 .sdf file, or a .dbml intermediate file.

NotesRemarks

La fonctionnalité SqlMetal implique en fait deux étapes :SqlMetal functionality actually involves two steps:

  • Extraction des métadonnées de la base de données dans un fichier .dbml.Extracting the metadata of the database into a .dbml file.

  • Génération d'un fichier de sortie de code.Generating a code output file.

    En utilisant les options de ligne de commande appropriées, vous pouvez produire du code source en Visual Basic ou C#, ou encore un fichier de mappage en XML.By using the appropriate command-line options, you can produce Visual Basic or C# source code, or you can produce an XML mapping file.

Pour extraire les métadonnées d'un fichier .mdf, vous devez spécifier le nom du fichier .mdf après toutes les autres options.To extract the metadata from an .mdf file, you must specify the name of the .mdf file after all other options.

Si /server n’est pas spécifié, localhost/sqlexpress est supposé.If no /server is specified, localhost/sqlexpress is assumed.

Microsoft SQL Server 2005Microsoft SQL Server 2005 lève une exception si une ou plusieurs conditions parmi les suivantes est vraie : throws an exception if one or more of the following conditions are true:

  • SqlMetal essaie d'extraire une procédure stockée qui s'appelle elle-même.SqlMetal tries to extract a stored procedure that calls itself.

  • Le niveau d'imbrication d'une procédure stockée, d'une fonction, ou d'une vue dépasse 32.The nesting level of a stored procedure, function, or view exceeds 32.

    SqlMetal intercepte cette exception et la signale comme un avertissement.SqlMetal catches this exception and reports it as a warning.

Pour spécifier un nom de fichier d'entrée, ajoutez son nom à la ligne de commande comme fichier d'entrée.To specify an input file name, add the name to the command line as the input file. L’inclusion du nom de fichier dans la chaîne de connexion (avec l’option /conn ) n’est pas prise en charge.Including the file name in the connection string (using the /conn option) is not supported.

ExemplesExamples

Générez un fichier .dbml qui inclut des métadonnées SQL extraites :Generate a .dbml file that includes extracted SQL metadata:

sqlmetal /server:myserver /database:northwind /dbml:mymeta.dbmlsqlmetal /server:myserver /database:northwind /dbml:mymeta.dbml

Générez un fichier .dbml qui inclut des métadonnées SQL extraites d'un fichier .mdf à l'aide de SQL Server Express :Generate a .dbml file that includes extracted SQL metadata from an .mdf file by using SQL Server Express:

sqlmetal /dbml:mymeta.dbml mydbfile.mdfsqlmetal /dbml:mymeta.dbml mydbfile.mdf

Générez un fichier .dbml qui inclut des métadonnées SQL extraites de SQL Server Express :Generate a .dbml file that includes extracted SQL metadata from SQL Server Express:

sqlmetal /server:.\sqlexpress /dbml:mymeta.dbml /database:northwindsqlmetal /server:.\sqlexpress /dbml:mymeta.dbml /database:northwind

Générez du code source à partir d'un fichier de métadonnées .dbml :Generate source code from a .dbml metadata file:

sqlmetal /namespace:nwind /code:nwind.cs /language:csharp mymetal.dbmlsqlmetal /namespace:nwind /code:nwind.cs /language:csharp mymetal.dbml

Générez le code source directement à partir de métadonnées SQL :Generate source code from SQL metadata directly:

sqlmetal /server:myserver /database:northwind /namespace:nwind /code:nwind.cs /language:csharpsqlmetal /server:myserver /database:northwind /namespace:nwind /code:nwind.cs /language:csharp

Note

Quand vous utilisez l’option /pluralize avec l’exemple de base de données Northwind, notez le comportement suivant.When you use the /pluralize option with the Northwind sample database, note the following behavior. Lorsque SqlMetal génère des noms de types de lignes pour des tables, les noms de table sont au singulier.When SqlMetal makes row-type names for tables, the table names are singular. Lorsqu'il génère des propriétés DataContext pour des tables, les noms de table sont au pluriel.When it makes DataContext properties for tables, the table names are plural. Par coïncidence, les tables de l'exemple de base de données Northwind sont déjà au pluriel.Coincidentally, the tables in the Northwind sample database are already plural. Par conséquent, vous ne pourrez pas voir cette partie active.Therefore, you do not see that part working. Bien qu’il soit courant de nommer des tables de base de données au pluriel, il est également courant dans .NET de nommer des collections au pluriel.Although it is common practice to name database tables singular, it is also a common practice in .NET to name collections plural.

Voir aussiSee Also

Guide pratique pour générer le modèle objet en Visual Basic ou C#How to: Generate the Object Model in Visual Basic or C#
Génération de code dans LINQ to SQLCode Generation in LINQ to SQL
Mappage externeExternal Mapping