SqlMetal.exe (Herramienta de generación de código)SqlMetal.exe (Code Generation Tool)

La herramienta de la línea de comandos SqlMetal genera el código y las asignaciones del componente LINQ to SQLLINQ to SQL de .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. Si aplica las opciones que se incluyen posteriormente en este tema, puede indicarle a SqlMetal que realice algunas acciones diferentes, entre las que se incluyen las siguientes:By applying options that appear later in this topic, you can instruct SqlMetal to perform several different actions that include the following:

  • A partir de una base de datos, generar código fuente y atributos de asignación o un archivo de asignación.From a database, generate source code and mapping attributes or a mapping file.

  • A partir de una base de datos, generar un archivo de lenguaje intermedio de marcado de base de datos (.dbml) para su personalización.From a database, generate an intermediate database markup language (.dbml) file for customization.

  • A partir de un archivo .dbml, generar código y atributos de asignación o un archivo de asignación.From a .dbml file, generate code and mapping attributes or a mapping file.

Esta herramienta se instala automáticamente con Visual Studio.This tool is automatically installed with Visual Studio. De manera predeterminada, el archivo se encuentra en drive:\Archivos de programa\Microsoft SDKs\Windows\vn.nn\bin.By default, the file is located at drive:\Program Files\Microsoft SDKs\Windows\vn.nn\bin. Si no instala Visual Studio, también puede obtener el archivo de SQLMetal descargando Windows SDK.If you do not install Visual Studio, you can also get the SQLMetal file by downloading the Windows SDK.

Nota

Los programadores que utilizan Visual Studio también pueden usar Object Relational DesignerObject Relational Designer para generar clases de entidad.Developers who use Visual Studio can also use the Object Relational DesignerObject Relational Designer to generate entity classes. El enfoque de la línea de comandos se ajusta bien a las bases de datos grandes.The command-line approach scales well for large databases. Dado que SqlMetal es una herramienta de línea de comandos, puede utilizarse en un proceso de compilación.Because SqlMetal is a command-line tool, you can use it in a build process.

Para ejecutar la herramienta, utilice el Símbolo del sistema para desarrolladores (o el Símbolo del sistema de Visual Studio en Windows 7).To run the tool, use the Developer Command Prompt (or the Visual Studio Command Prompt in Windows 7). Para obtener más información, vea Símbolos del sistema. En el símbolo del sistema, escriba lo siguiente:For more information, see Command Prompts.At the command prompt, type the following:

SintaxisSyntax

sqlmetal [options] [<input file>]  

OpcionesOptions

Para ver la lista de opciones más reciente, escriba sqlmetal /? en el símbolo del sistema de la ubicación de instalación.To view the most current option list, type sqlmetal /? at a command prompt from the installed location.

Opciones de conexiónConnection Options

OpciónOption DescriptionDescription
/server: <nombre>/server: <name> Especifica el nombre del servidor de bases de datos.Specifies database server name.
/database: <nombre>/database: <name> Especifica el catálogo de base de datos del servidor.Specifies database catalog on server.
/user: <nombre>/user: <name> Especifica el identificador de usuario de inicio de sesión. Valor predeterminado: Usar autenticación de Windows.Specifies logon user id. Default value: Use Windows authentication.
/password: <contraseña>/password: <password> Especifica la contraseña de inicio de sesión.Specifies logon password. Valor predeterminado: Usar autenticación de Windows.Default value: Use Windows authentication.
/conn: <cadena de conexión>/conn: <connection string> Especifica la cadena de conexión a bases de datos.Specifies database connection string. No se puede usar con las opciones /server, /database, /userni /password .Cannot be used with /server, /database, /user, or /password options.

No incluya el nombre de archivo en la cadena de conexión.Do not include the file name in the connection string. En su lugar, agregue el nombre a la línea de comandos como archivo de entrada.Instead, add the file name to the command line as the input file. Por ejemplo, en la línea siguiente se especifica "c:\northwnd.mdf" como archivo de entrada: 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: <segundos>/timeout: <seconds> Especifica el valor de tiempo de espera cuando SqlMetal tiene acceso a la base de datos.Specifies time-out value when SqlMetal accesses the database. Valor predeterminado: 0 (es decir, sin límite de tiempo).Default value: 0 (that is, no time limit).

Opciones de extracciónExtraction options

OpciónOption DescriptionDescription
/views/views Extrae las vistas de base de datos.Extracts database views.
/functions/functions Extrae las funciones de base de datos.Extracts database functions.
/sprocs/sprocs Extrae los procedimientos almacenados.Extracts stored procedures.

Opciones de salidaOutput options

OpciónOption DescriptionDescription
/dbml [:file]/dbml [:file] Envía el resultado como .dbml.Sends output as .dbml. No se puede usar con la opción /map .Cannot be used with /map option.
/code [:file]/code [:file] Envía el resultado como código fuente.Sends output as source code. No se puede usar con la opción /dbml .Cannot be used with /dbml option.
/map [:file]/map [:file] Genera un archivo de asignación XML en lugar de atributos de asignación.Generates an XML mapping file instead of attributes. No se puede usar con la opción /dbml .Cannot be used with /dbml option.

VariosMiscellaneous

OpciónOption DescriptionDescription
/language: <lenguaje>/language: <language> Especifica el lenguaje del código fuente.Specifies source code language.

<Lenguaje> válido: vb, csharp.Valid <language>: vb, csharp.

Valor predeterminado: se deriva de la extensión del nombre del archivo de código.Default value: Derived from extension on code file name.
/namespace: <nombre>/namespace: <name> Especifica el espacio de nombres del código generado.Specifies namespace of the generated code. Valor predeterminado: sin espacio de nombres.Default value: no namespace.
/context: <tipo>/context: <type> Especifica el nombre de la clase de contexto de datos.Specifies name of data context class. Valor predeterminado: se deriva del nombre de la base de datos.Default value: Derived from database name.
/entitybase: <tipo>/entitybase: <type> Especifica la clase base de las clases de entidad en el código generado.Specifies the base class of the entity classes in the generated code. Valor predeterminado: entidades que no tienen clase base.Default value: Entities have no base class.
/pluralize/pluralize Pone automáticamente en singular o en plural nombres de clases y miembros.Automatically pluralizes or singularizes class and member names.

Esta opción solo está disponible en Estados Unidos. Versión en inglés.This option is available only in the U.S. English version.
/serialization: <opción>/serialization: <option> Genera las clases serializables.Generates serializable classes.

<Opción> válida: ninguna, unidireccional.Valid <option>: None, Unidirectional. Valor predeterminado: None.Default value: None.

Para obtener más información, vea Serialización.For more information, see Serialization.

Archivo de entradaInput File

OpciónOption DescriptionDescription
<archivo de entrada><input file> Especifica un archivo .mdf de SQL Server Express, un archivo .sdf de SQL Server Compact 3,5SQL Server Compact 3.5 o un archivo intermedio .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.

ComentariosRemarks

La funcionalidad de SqlMetal se compone en realidad de dos pasos:SqlMetal functionality actually involves two steps:

  • La extracción de los metadatos de la base de datos en un archivo .dbml.Extracting the metadata of the database into a .dbml file.

  • La compilación de un archivo de salida de código.Generating a code output file.

    Mediante las opciones apropiadas de la línea de comandos, puede generar código fuente de Visual Basic o de C# o puede generar un archivo de asignación 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.

Para extraer los metadatos de un archivo .mdf, debe especificar el nombre del archivo .mdf después del resto de opciones.To extract the metadata from an .mdf file, you must specify the name of the .mdf file after all other options.

Si no hay ningún /server especificado, se tomará localhost/sqlexpress .If no /server is specified, localhost/sqlexpress is assumed.

Microsoft SQL Server 2005Microsoft SQL Server 2005 produce una excepción si se cumple una o varias de las condiciones siguientes: throws an exception if one or more of the following conditions are true:

  • SqlMetal intenta extraer un procedimiento almacenado que se llama a sí mismo.SqlMetal tries to extract a stored procedure that calls itself.

  • El nivel de anidamiento de una vista, función o procedimiento almacenado supera el nivel 32.The nesting level of a stored procedure, function, or view exceeds 32.

    SqlMetal detecta esta excepción y la notifica como una advertencia.SqlMetal catches this exception and reports it as a warning.

Para especificar un nombre de archivo de entrada, agregue el nombre a la línea de comandos como archivo de entrada.To specify an input file name, add the name to the command line as the input file. No se admite la inclusión del nombre de archivo en la cadena de conexión (mediante la opción /conn ).Including the file name in the connection string (using the /conn option) is not supported.

EjemplosExamples

Generar un archivo .dbml que incluya los metadatos de SQL extraídos:Generate a .dbml file that includes extracted SQL metadata:

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

Generar un archivo .dbml que incluya los metadatos de SQL extraídos de un archivo .mdf mediante 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

Generar un archivo .dbml que incluya los metadatos de SQL extraídos 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

Generar el código fuente de un archivo de metadatos .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

Generar código fuente directamente a partir de los metadatos de 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

Nota

Si usa la opción /pluralize con la base de datos de ejemplo Northwind, tenga en cuenta el comportamiento siguiente.When you use the /pluralize option with the Northwind sample database, note the following behavior. Cuando SqlMetal genera nombres de tipos de fila para las tablas, los nombres de la tabla están en singular.When SqlMetal makes row-type names for tables, the table names are singular. Cuando crea las propiedades DataContext para las tablas, los nombres de la tabla están en plural.When it makes DataContext properties for tables, the table names are plural. Casualmente, las tablas de la base de datos de ejemplo Northwind ya están en plural.Coincidentally, the tables in the Northwind sample database are already plural. Por tanto, no podrá ver este componente en funcionamiento.Therefore, you do not see that part working. Aunque es una práctica común asignar nombres a las tablas de bases de datos en singular, también es habitual que .NET asigne nombres en plural a las colecciones.Although it is common practice to name database tables singular, it is also a common practice in .NET to name collections plural.

Vea tambiénSee Also

Generación del modelo de objetos en Visual Basic o C#How to: Generate the Object Model in Visual Basic or C#
Generación de código en LINQ to SQLCode Generation in LINQ to SQL
Asignación externaExternal Mapping