Herramienta de generación de código (SqlMetal.exe)
Actualización: noviembre 2007
La herramienta de la línea de comandos SqlMetal genera el código y las asignaciones del componente LINQ to SQL de .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:
Desde una base de datos, generar código fuente y atributos de asignación (o un archivo de asignación).
Desde una base de datos, generar un archivo de lenguaje intermedio de marcado de base de datos (.dbml) para su personalización.
Desde un archivo .dbml, generar código y atributos de asignación (o un archivo de asignación).
De manera predeterminada, el archivo SQLMetal se encuentra en drive:\Archivos de programa\Microsoft SDKs\Windows\vn.nn\bin.
Nota
Los programadores que utilizan Visual Studio sólo pueden emplear Diseñador relacional de objetos para generar clases de entidad. El enfoque de la línea de comandos se ajusta bien a las bases de datos grandes. Dado que SqlMetal es una herramienta de la línea de comandos, puede utilizarse en un proceso de compilación. Para obtener más información, vea Diseñador relacional de objetos (Diseñador R/O) y Object Relational Designer y Object Relational Designer.
sqlmetal [options] [<input file>]
Opciones
Para ver la lista de opciones más reciente, escriba sqlmetal /? en el símbolo del sistema de la ubicación de instalación.
Opciones de conexión
Option |
Description |
---|---|
/server:<nombre> |
Especifica el nombre del servidor de base de datos. |
/database:<nombre> |
Especifica el catálogo de base de datos del servidor. |
/user:<nombre> |
Especifica el identificador de usuario de inicio de sesión. El valor predeterminado es "Utilizar autenticación de Windows". |
/password:<contraseña> |
Especifica la contraseña de inicio de sesión. El valor predeterminado es "Utilizar autenticación de Windows". |
/conn:<cadena de conexión> |
Especifica la cadena de conexión a bases de datos. No se puede utilizar con las opciones /server, /database, /user o /password. No incluya el nombre de archivo en la cadena de conexión. En su lugar, agregue el nombre a la línea de comandos como archivo de entrada. 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". |
/timeout:<segundos> |
Especifica el valor de tiempo de espera cuando SqlMetal tiene acceso a la base de datos. Valor predeterminado: 0 (es decir, sin límite de tiempo). |
Opciones de extracción
Option |
Description |
---|---|
/views |
Extrae las vistas de base de datos. |
/functions |
Extrae las funciones de base de datos. |
/sprocs |
Extrae los procedimientos almacenados. |
Opciones de resultados
Option |
Description |
---|---|
/dbml[:archivo] |
Envía el resultado como .dbml. No se puede utilizar con la opción /map. |
/code[:archivo] |
Envía el resultado como código fuente. No se puede utilizar con la opción /dbml. |
/map[:archivo] |
Genera un archivo de asignación XML en lugar de atributos de asignación. No se puede utilizar con la opción /dbml. |
Varios
Option |
Description |
---|---|
/language:<lenguaje> |
Especifica el lenguaje del código fuente. <lenguaje> válido: vb, csharp. Valor predeterminado: depende de la extensión del nombre del archivo de código. |
/namespace:<nombre> |
Especifica el espacio de nombres del código generado. Valor predeterminado: sin espacio de nombres. |
/context:<type> |
Especifica el nombre de la clase de contexto de datos. Valor predeterminado: depende del nombre de la base de datos. |
/entitybase:<type> |
Especifica la clase base de las clases de entidad en el código generado. Valor predeterminado: entidades que no tienen clase base. |
/pluralize |
Pluraliza y singulariza automáticamente nombres de clases y miembros. Esta opción sólo está disponible en la versión para inglés de Estados Unidos. |
/serialization:<opción> |
Genera las clases serializables. <opción> válida: None, Unidirectional. Valor predeterminado: None. Para obtener más información, consulte Serialización (LINQ to SQL). |
Archivo de entrada
Option |
Description |
---|---|
<input file> |
Especifica un archivo .mdf de SQL Server Express, un archivo .sdf de SQL Server Compact 3.5 o un archivo intermedio .dbml. |
Comentarios
La funcionalidad de SqlMetal se compone en realidad de dos pasos:
La extracción de los metadatos de la base de datos en un archivo .dbml.
La compilación de un archivo de resultados de código.
Mediante las opciones apropiadas de la línea de comandos, puede generar código fuente de Visual Basic o C# o puede generar un archivo de asignación XML.
Para extraer los metadatos de un archivo .mdf, debe especificar el nombre del archivo .mdf después de todas las demás opciones.
Si no se especifica /server, se asume que es localhost/sqlexpress.
Microsoft SQL Server 2005 produce una excepción si una o varias de las condiciones siguientes s cumplen:
SqlMetal intenta extraer un procedimiento almacenado que se llama a sí mismo.
El nivel de anidamiento de un procedimiento, función o vista almacenado supera el nivel 32.
SqlMetal detecta esta excepción y la notifica como una advertencia
Para especificar un nombre de archivo de entrada, agregue el nombre a la línea de comandos como archivo de entrada. No se permite incluir el nombre de archivo en la cadena de conexión (mediante la opción /conn).
Ejemplos
Cree un archivo .dbml que incluya los metadatos de SQL extraídos:
sqlmetal /servidor:miservidor/basededatos:northwind /dbml:mymeta.dbml
Cree un archivo .dbml que incluya los metadatos de SQL extraídos de un archivo .mdf mediante SQL Server Express:
sqlmetal /dbml:mismetadatos.dbml miarchivodb.mdf
Genere un archivo .dbml que incluya los metadatos de SQL extraídos de SQL Server Express:
sqlmetal /servidor:.\sqlexpress /dbml:mismetadatos.dbml /basededatos:northwind
Cree el código fuente de un archivo de metadatos .dbml:
sqlmetal /espaciodenombres:nwind /código:nwind.cs /lenguaje:csharp mimetal.dbml
Genere código fuente directamente a partir de los metadatos de SQL:
sqlmetal /servidor:miservidor /basededatos:northwind /espaciodenombres:nwind /código:nwind.cs /lenguaje:csharp
Nota
Si utiliza la opción /pluralize con la base de datos de ejemplo Northwind, tenga en cuenta el comportamiento siguiente. Cuando SqlMetal genera nombres de tipos de fila para las tablas, los nombres de la tabla están en singular. Cuando crea las propiedades DataContext para las tablas, los nombres de la tabla están en plural. Casualmente, las tablas de la base de datos de ejemplo Northwind ya están en plural. Por tanto, no podrá ver este componente en funcionamiento, 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.
Vea también
Tareas
Cómo: Generar el modelo de objetos en Visual Basic o C# (LINQ to SQL)
Conceptos
Generación de código en LINQ to SQL