Información general sobre el código generado (Entity Data Model Designer)

ADO.NET Entity Framework proporciona herramientas para generar automáticamente un nivel de objetos basado en el contenido del lenguaje de definición de esquemas conceptuales (CSDL) de un archivo .edmx. De forma predeterminada, la herramienta personalizada usada por ADO.NET Entity Data Model Designer (Entity Designer) para generar el código de nivel de objeto es EntityModelCodeGenerator. Para obtener información sobre las herramientas personalizadas, vea Implementar generadores de un solo archivo. También puede utilizar la herramienta de línea de comandos EdmGen.exe. Para obtener más información, vea How to: Use EdmGen.exe to Generate Object Model Files. EntityModelCodeGenerator y la herramienta de línea de comandos EdmGen.exe usan la clase EntityClassGenerator para generar el código fuente.

Entity Designer también puede usar plantillas de texto para generar código de nivel de objeto personalizado. Para obtener más información, vea Cómo: Personalizar la generación de código de nivel de objeto (Entity Data Model Designer).

Generar código de nivel de objeto

La herramienta personalizada predeterminada usada para generar código de nivel de objeto se puede activar de varias maneras:

  • Use el Asistente para Entity Data Model de ADO.NET. Para obtener más información, vea Asistente para Entity Data Model.

  • Use el Asistente para actualizar modelo. Para obtener más información, vea Asistente para actualizar modelo (herramientas de Entity Data Model).

  • Ejecute la herramienta especificada en la propiedad Custom Tool del archivo .edmx. Para ello, haga clic con el botón secundario en un archivo .edmx en el Explorador de soluciones y seleccione Ejecutar herramienta personalizada. Para obtener más información acerca de las propiedades del archivo .edmx, vea Información general sobre el archivo .edmx (Entity Framework).

  • Guarde un archivo .edmx.

  • Salga de la pestaña para salir de un archivo .edmx que se ha modificado. Tenga en cuenta que esto incluye salir de la pestaña desde un archivo .edmx modificado que está abierto en Entity Designer.

  • Compile un proyecto que tenga un archivo .edmx que se ha modificado.

    Cc982041.note(es-es,VS.100).gifNota:
    Las opciones anteriores generan o sobrescriben un archivo de código fuente de Visual Basic o de C# con el nombre siguiente: <nombre de modelo>.Designer.vb o <nombre de modelo>.Designer.cs.Este archivo se agrega al nodo .edmx en el Explorador de soluciones.

  • Use la herramienta de línea de comandos EdmGen.exe. Use la herramienta EdmGen.exe para generar un archivo de código fuente de Visual Basic o de C# con el nombre y la ubicación especificados en la línea de comandos.

Cc982041.note(es-es,VS.100).gifNota:
Cuando la herramienta personalizada predeterminada o EdmGen.exe generan código de nivel de objeto, el código de nivel de objeto existente se sobrescribe.Para obtener información sobre cómo evitar la sobrescritura de las personalizaciones del nivel de objeto, vea How to: Customize Generated Data Objects.

Cc982041.note(es-es,VS.100).gifNota:
El método que se genera a partir de una importación de función en el modelo conceptual ejecutará el correspondiente procedimiento almacenado con el método ExecuteFunction.Si usa la sobrecarga que no incluye el parámetro de opción de combinación, se utilizará la opción AppendOnly.

Cc982041.note(es-es,VS.100).gifNota:
A partir de Visual Studio 2010, los generadores de código establecen la propiedad LazyLoadingEnabled de ObjectContext en el valor del atributo de anotación annotation:LazyLoadingEnabled que se define en el modelo conceptual.De forma predeterminada, el valor annotation:LazyLoadingEnabled se establece en true.

Determinar el espacio de nombres del código generado

De forma predeterminada, el espacio de nombres de código generado es el espacio de nombres especificado en la página Aplicación del proyecto. Si especifica el espacio de nombres en la propiedad Custom Tool Namespace del archivo .edmx, se usa el espacio de nombres especificado.

En función del tipo de proyecto se aplican algunas consideraciones adicionales, según se indica a continuación:

  • En proyectos de Visual Basic, si no se ha establecido ningún valor para la propiedad Custom Tool Namespace y el proyecto tiene un espacio de nombres vacío, el espacio de nombres del código generado será el espacio de nombres del modelo conceptual, tal y como se especificó en el archivo .edmx. Para obtener más información, vea el tema para Determinar el espacio de nombres predeterminado. Si especifica el espacio de nombres de herramienta personalizado, el compilador de Visual Studio antepondrá el espacio de nombres de la raíz del proyecto al nombre que especificó. Aunque los tipos se definen en el espacio de nombres especificado, al declarar los tipos debe importar defaultnamespace.specifiednamespace. Por ejemplo, si el espacio de nombres de la raíz del proyecto es ProjectDefaultNamespace y en la propiedad Custom Tool Namespace especificó TestNamespace, al declarar los tipos que se definen en el espacio de nombres TestNamespace, debe utilizar: Import ProjectDefaultNamespace.TestNamespace.

  • Para los proyectos de C#, si no se ha especificado ningún espacio de nombres para la propiedad Custom Tool Namespace, el espacio de nombres del código generado será el espacio de nombres predeterminado del proyecto (tal y como se especificó en la página Aplicación del proyecto) más la ruta de acceso de la carpeta de la ubicación del archivo .edmx. Por ejemplo, si la ruta de acceso del archivo .edmx relativa al directorio raíz del proyecto es Carpeta1/Carpeta2/Model.edmx, el espacio de nombres del código generado será ProjectDefaultNamespace.Carpeta1.Carpeta2.

  • En los proyectos de sitio web ASP.NET, si el archivo .edmx se encuentra en la raíz de la carpeta App_Code, el espacio de nombres del código generado será el espacio de nombres del modelo conceptual, tal y como se definió en el contenido CSDL del archivo .edmx (para obtener más información, vea Schema Element (CSDL)). Si el archivo .edmx se encuentra en una subcarpeta de la carpeta App_Code, el espacio de nombres del código generado será la ruta de acceso de la carpeta relativa a la carpeta App_Code. Por ejemplo, si el archivo .edmx se encuentra en App_Code/Carpeta1/Carpeta2, el espacio de nombres del código generado será Carpeta1.Carpeta2.

Trabajar con varios archivos .edmx en un proyecto

Cuando un proyecto contiene varios archivos .edmx basados en bases de datos con nombres de tabla comunes, el código generado puede contener nombres de clases conflictivos. Las circunstancias en las que surgen estos conflictos y cómo se resuelven depende del tipo de proyecto, de la manera siguiente:

  • En los proyectos de C#, los nombres de clase conflictivos pueden aparecer en el código generado si existen varios archivos .edmx basados en bases de datos con nombres de tabla comunes en la misma carpeta de proyecto. Para resolver un conflicto, especifique un valor único para la propiedad Custom Tool Namespace de cada archivo .edmx o colóquelos en subcarpetas de proyecto independientes.

  • En los proyectos de Visual Basic, los nombres de clase conflictivos pueden aparecer en el código generado si existen varios archivos .edmx basados en bases de datos con nombres de tabla comunes en cualquier lugar del proyecto. Para resolver un conflicto, especifique un valor único para la propiedad Custom Tool Namespace de cada archivo .edmx.

  • En los proyectos de sitio web ASP.NET, los nombres de clase conflictivos pueden aparecer en el código generado si existen varios archivos .edmx basados en bases de datos con nombres de tabla comunes en la carpeta App_Code o en la misma subcarpeta del directorio App_Code. Para resolver un conflicto, coloque cada archivo .edmx en una subcarpeta independiente del directorio App_Code.

Tenga en cuenta que la resolución en cada caso cambia el espacio de nombres del código generado para cada archivo .edmx; es posible que el código de aplicación existente que usa las clases generadas deba actualizarse.

Extender clases parciales

Cuando las herramientas de Entity Data Model generan clases de datos, estas se implementan en clases parciales. Puede agregar funcionalidad a los objetos extendiendo las clases de datos parciales generadas. Tener clases parciales le permite extender estas clases con métodos y propiedades personalizados en un archivo de código fuente independiente sin tener que preocuparse por perder su personalización cuando se actualicen los archivos generados. Para obtener más información, vea How to: Customize Generated Data Objects.

En esta sección

Vea también

Conceptos

Información general sobre el archivo .edmx (Entity Framework)