¿Cómo pregenerar vistas para múltiples DbContexts?

Tenemos una aplicación que utiliza el marco de entidad 4.1 con la API DbContext. La aplicación tiene múltiples DbContexts mapeo a diferentes bases de datos y tablas. Esta semana generamos previamente las vistas para el DbContext con Codifique las primeras plantillas T4 para la generación de vistas para ahorrar tiempo de inicio y todo fue maravilloso... hasta que necesitábamos usar el segundo DbContext. En ese punto, obtuvimos la siguiente excepción:

"La información de mapeo y metadatos para EntityContainer 'CodeFirstContainer' ya no coincide con la información utilizada para crear las vistas generadas previamente".

Ya sea que hayamos generado la vista para uno o varios de nuestros DbContexts, obtenemos esa excepción.

¿Cómo puedo pregenerar vistas para múltiples DbContexts y aún tener una aplicación en funcionamiento?

Miré el sospechoso 'CodeFirstContainer' en el mensaje para descubrir que estaba en ambos constructores de vistas pregeneradas que se veían así:

public ViewsForBaseEntitySetsCE5A4DE7E067A5879A835C5C494F186A390ADC2D26E82631FDC17C61E7E3D076
{
    this.EdmEntityContainerName = "CodeFirstContainer";
    this.StoreEntityContainerName = "CodeFirstDatabase";
    this.HashOverMappingClosure = "198099ba4b299a8dc37402a5c4c65096d216c3ca5f3c1e6c796d33e723483d74";
    this.HashOverAllExtentViews = "85be433ad451c345f4d8e92827653fd9203be3008dd387745798f939514a0b2f";
    this.ViewCount = 14;
}

La única diferencia entre ambos constructores de vistas fueron las últimas 3 propiedades.

Alternativamente, si alguien sabe cómo puedo decirle a EF que no use CodeFirstContainer para ambos DbContexts, entonces podría cambiar las vistas generadas o DbContext yo mismo y hacer que todo funcione ... a menos que esto esté incluido en el hash.

preguntado el 27 de julio de 12 a las 17:07

No creo que actualmente sea posible cambiar edm y/o almacenar nombres de contenedores. -

0 Respuestas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.