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) |
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