Cómo: Generar previamente vistas para mejorar el rendimiento de las consultas

Antes de que Entity Framework pueda ejecutar una consulta en un modelo conceptual o guardar los cambios realizados en el origen de datos, debe generar un conjunto de vistas de consulta locales para obtener acceso a la base de datos. Las vistas forman parte de los metadatos que están almacenados en la memoria caché por dominio de aplicación. Si crea varias instancias de contexto del objeto en el mismo dominio de aplicación, volverán a usar las vistas desde los metadatos almacenados en la memoria caché en vez de volver a generarlos. Dado que la generación de la vista forma una parte significativa del costo total que supone ejecutar una única consulta, Entity Framework permite generar previamente estas vistas e incluirlas en el proyecto compilado. Para obtener más información, vea Consideraciones de rendimiento (Entity Framework).

Además de generar y validar los archivos de asignación y del modelo de Entity Framework, también se usa la herramienta Generador de EDM (EdmGen.exe) para generar previamente estas vistas. En este tema se muestra cómo utilizar EdmGen.exe para generar previamente las vistas del modelo School y agregar el archivo de vistas al proyecto. El modelo School se crea en el Tutorial rápido de Entity Framework . El procedimiento final muestra cómo volver a agregar el modelo y asignar los archivos como recursos incrustados a una aplicación web ASP.NET.

También podría utilizar el Kit de herramientas de transformación de plantillas de texto para generar vistas precompiladas. Para obtener más información, vea How to use a T4 template for View Generation.

Bb896240.note(es-es,VS.100).gifNota:
Los procedimientos de este tema usan eventos anteriores y posteriores de compilación en Visual Studio, que no se admiten en los sitios web ASP.NET. Para generar previamente las vistas que se utilizan para un sitio web ASP.NET, cree el archivo .edmx en una biblioteca de clases independiente, utilice los procedimientos de How to: Use a Model Defined in a Class Library para el proyecto de biblioteca de clases y haga referencia al proyecto de biblioteca de clases en el proyecto de sitio web ASP.NET. O bien, considere usar un proyecto de aplicación web ASP.NET en lugar de un sitio web ASP.NET. Esto le permite incluir las vistas pregeneradas en el mismo proyecto que la aplicación web ASP.NET utilizando los procedimientos de este tema.

Las vistas generadas previamente se validan en tiempo de ejecución para garantizar su coherencia con la versión actual de los archivos de modelo y asignación.

Los procedimientos de este tema usan el modelo School. Puede generar este modelo completando el Tutorial rápido (Entity Framework). Puede omitir el primer procedimiento si el proceso de compilación ya está generando los archivos de asignación y modelo en el directorio de salida.

Para generar los archivos de asignación y modelo para el modelo School en el directorio de salida

  1. En el Explorador de soluciones, haga doble clic en el archivo School.edmx.

    De esta forma se muestra el modelo School en el Entity Designer.

  2. En el Explorador de modelos, seleccione el modelo SchoolModel y cambie Procesamiento de artefactos de metadatos por Copiar en el directorio de resultados.

    De esta forma se asegura de que los archivos de asignación y modelo se generan en el directorio de resultados.

  3. Compile la solución.

    De esta forma se generan los archivos de asignación y modelo en el directorio de salida.

Para agregar la generación de la vista a un proyecto Visual Basic

  1. En el Explorador de soluciones, seleccione el proyecto para el que desea especificar el evento de compilación.

  2. En el menú Proyecto, haga clic en Propiedades del Proyecto.

  3. En la página Propiedades, haga clic en la pestaña Compilar.

  4. Haga clic en el botón Generar eventos.

  5. En el cuadro de diálogo Eventos de compilación, agregue el siguiente evento anterior a la compilación, sin saltos de línea:

    "%windir%\Microsoft.NET\Framework\v4.0.30319\EdmGen.exe" /nologo /language:VB 
    /mode:ViewGeneration "/inssdl:$(TargetDir)School.ssdl" 
    "/incsdl:$(TargetDir)School.csdl" "/inmsl:$(TargetDir)School.msl" 
    "/outviews:$(ProjectDir)School.Views.vb"
    
  6. Haga clic en Aceptar.

  7. Cierre la página Propiedades del proyecto.

  8. Compile la solución.

    De esta forma se genera el archivo de vistas School.Views.vb.

  9. En el Explorador de soluciones, haga clic con el botón secundario en el nombre del proyecto y seleccione Agregar elemento existente.

  10. En el cuadro de diálogo Agregar elemento existente, navegue a la carpeta raíz del proyecto y seleccione el archivo School.Views.vb.

  11. Haga clic en Agregar.

  12. Compile la solución.

Para agregar la generación de la vista a un proyecto de C#

  1. En el Explorador de soluciones, seleccione el proyecto para el que desea especificar el evento de compilación.

  2. En el menú Proyecto, haga clic en Propiedades.

  3. Seleccione la pestaña Eventos de compilación.

  4. En la ventana Línea de comandos del evento anterior a la compilación, agregue el siguiente evento anterior a la compilación, sin saltos de línea:

    "%windir%\Microsoft.NET\Framework\v4.0.30319\EdmGen.exe" /nologo /language:CSharp 
    /mode:ViewGeneration "/inssdl:$(TargetDir)School.ssdl" 
    "/incsdl:$(TargetDir)School.csdl" "/inmsl:$(TargetDir)School.msl" 
    "/outviews:$(ProjectDir)School.Views.cs"
    
  5. Compile la solución.

    De esta forma se genera el archivo de vista School.Views.cs.

  6. En el Explorador de soluciones, haga clic con el botón secundario en el nombre del proyecto y seleccione Agregar elemento existente.

    Aparece el cuadro de diálogo Agregar elemento existente.

  7. Navegue a la carpeta raíz del proyecto y seleccione el archivo School.Views.cs.

  8. Haga clic en Agregar.

  9. Compile la solución.

Para volver a agregar los archivos de asignación y modelo como recursos incrustados para los proyectos ASP.NET

  1. En el menú Proyecto, haga clic en Agregar elemento existente.

  2. Vaya al directorio de resultados para el proyecto, seleccione School.csdl y, a continuación, haga clic en aceptar.

  3. En el Explorador de soluciones, seleccione el archivo de metadatos .csdl.

  4. En Propiedades, establezca Acción de compilación en Recurso incrustado.

  5. Repita los pasos 1 a 3 para los archivos School.ssdl y School..msl.

  6. En el Explorador de soluciones, haga doble clic en el archivo App.config y, a continuación, modifique el parámetro Metadata del atributo connectionString basándose en uno de los formatos siguientes:

    • Metadata= res://<assemblyFullName>/<resourceName>;

    • Metadata= res://*/<resourceName>;

    • Metadata=res://*;

    resourceName puede incluir el espacio de nombres de proyecto. Para obtener más información, vea Cadenas de conexión (Entity Framework).

Vea también

Referencia

Generador de EDM (EdmGen.exe)

Otros recursos

Entity Data Model Tools
Isolating Performance with Precompiled/Pre-generated Views in the Entity Framework 4