Partager via


Outil de génération de code (SqlMetal.exe)

Mise à jour : novembre 2007

L'outil en ligne de commande SqlMetal génère le code et le mappage du composant LINQ to SQL du .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 :

  • À partir d'une base de données, générez le code source et les attributs de mappage ou un fichier de mappage.

  • À partir d'une base de données, générez un fichier .dbml (database markup language) intermédiaire à des fins de personnalisation.

  • À partir d'un fichier .dbml, générez du code et des attributs de mappage ou un fichier de mappage.

Par défaut, le fichier SQLMetal se trouve à l'emplacement suivant : drive:\Program Files\Microsoft SDKs\Windows\vn.nn\bin.

Remarque :

Les développeurs qui utilisent Visual Studio peuvent également utiliser le Concepteur Objet/Relationnel pour générer des classes d'entité. L'approche de ligne de commande est bien adaptée aux bases de données volumineuses. Puisque SqlMetal est un outil de ligne de commande, vous pouvez l'utiliser dans un processus de génération. Concepteur Objet/Relationnel (Concepteur O/R)
Concepteur Objet/Relationnel (Concepteur O/R)
Concepteur Objet/Relationnel (Concepteur O/R)

sqlmetal [options] [<input file>]

Options

Pour consulter la liste des options la plus actuelle, tapez sqlmetal /? à une invite de commandes à partir de l'emplacement d'installation.

Options de connexion

Option

Description

/server:<nom>

Spécifie le nom du serveur de base de données.

/database:<nom>

Spécifie le catalogue de base de données sur le serveur.

/user:<nom>

Spécifie l'ID de connexion de l'utilisateur. Valeur par défaut : Utilisez l'authentification Windows.

/password:<mot de passe>

Spécifie le mot de passe d'ouverture de session. Valeur par défaut : Utilisez l'authentification Windows.

/conn:<chaîne de connexion>

Spécifie la chaîne de connexion de base de données. Elle ne peut pas être utilisée avec les options /server, /database, /user, ou /password.

N'inclut pas le nom de fichier dans la chaîne de connexion. Ajoutez plutôt le nom de fichier à la ligne de commande comme fichier d'entrée. 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".

/timeout:<secondes>

Spécifie la valeur du délai d'attente lorsque SqlMetal accède à la base de données. Valeur par défaut : 0 (à savoir, aucune limite de temps).

Options d'extraction

Option

Description

/views

Extrait des vues de base de données.

/functions

Extrait des fonctions de base de données.

/sprocs

Extrait des procédures stockées.

Options de sortie

Option

Description

/dbml[:fichier]

Envoie la sortie au format .dbml. Ne peut pas être utilisé avec l'option /map.

/code[:fichier]

Envoie la sortie sous la forme de code source. Ne peut pas être utilisé avec l'option /dbml.

/map[:fichier]

Génère un fichier de mappage XML plutôt que des attributs. Ne peut pas être utilisé avec l'option /dbml.

Divers

Option

Description

/language:<langage>

Spécifie le langage du code source.

<langage> valide : vb, csharp.

Valeur par défaut : Dérivé de l'extension du nom du fichier de code.

/namespace:<nom>

Spécifie l'espace de noms du code généré. Valeur par défaut : Aucun espace de noms.

/context:<type>

Spécifie le nom de la classe du contexte de données. Valeur par défaut : Dérivé du nom de la base de données.

/entitybase:<type>

Spécifie la classe de base des classes d'entité du code généré. Valeur par défaut : Les entités n'ont pas de classe de base.

/pluralize

Pluralise ou singularise automatiquement des noms de membre et de classe.

Cette option n'est disponible que dans la version anglaise (États-Unis).

/serialization:<option>

Génère des classes sérialisables.

<option> valide : Aucun, Unidirectionnel. Valeur par défaut : Aucun.

Pour plus d'informations, consultez Sérialisation (LINQ to SQL).

Fichier d'entrée

Option

Description

<input file>

Spécifie un fichier SQL Server Express .mdf, un fichier SQL Server Compact 3.5 .sdf, ou un fichier intermédiaire .dbml.

Notes

La fonctionnalité SqlMetal implique en fait deux étapes :

  • Extraction des métadonnées de la base de données dans un fichier .dbml.

  • Génération d'un fichier de sortie de code.

    En utilisant les options de ligne de commande appropriées, vous pouvez produire Visual Basic ou du code source C#, ou alors un fichier de mappage XML.

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.

Si aucun /server n'est spécifié, localhost/sqlexpress est utilisé.

Microsoft SQL Server 2005 lève une exception si une ou plusieurs conditions parmi les suivantes est vraie :

  • SqlMetal essaie d'extraire une procédure stockée qui s'appelle elle-même.

  • Le niveau d'imbrication d'une procédure stockée, d'une fonction, ou d'une vue dépasse 32.

    SqlMetal intercepte cette exception et la signale comme un avertissement.

Pour spécifier un nom de fichier d'entrée, ajoutez son nom à la ligne de commande comme fichier d'entrée. L'inclusion du nom de fichier dans la chaîne de connexion (à l'aide de l'option /conn) n'est pas pris en charge.

Exemples

Générez un fichier .dbml qui inclut des métadonnées SQL extraites :

sqlmetal /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 :

sqlmetal /dbml:mymeta.dbml mydbfile.mdf

Générez un fichier .dbml qui inclut des métadonnées SQL extraites de SQL Server Express :

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

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

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

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

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

Remarque :

Lorsque vous utilisez l'option /pluralize avec l'exemple de base de données Northwind, notez le comportement suivant. Lorsque SqlMetal génère des noms de types de lignes pour des tables, les noms de table sont au singulier. Lorsqu'il génère des propriétés DataContext pour des tables, les noms de table sont au pluriel. Par coïncidence, les tables de l'exemple de base de données Northwind sont déjà au pluriel. Par conséquent, vous ne pourrez voir cette partie active. 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.

Voir aussi

Tâches

Procédure : générer le modèle objet en Visual Basic ou C# (LINQ to SQL)

Concepts

Génération de code dans LINQ to SQL

Référence

Référence de mappage externe (LINQ to SQL)