Entity Framework establece el esquema de la base de datos según el entorno de implementación

La aplicación que desarrollo se implementa en varios entornos (desarrollo, prueba, puesta en escena, producción).

Mientras desarrollaba, creé el modelo de entidad a partir de la base de datos de desarrollo existente. Todo funciona bien, pero como quería poner la aplicación en el entorno de prueba, me di cuenta del siguiente problema:

La estructura de la base de datos es idéntica en todos los entornos, pero el esquema de la base de datos cambia de un entorno a otro. por ejemplo hay un Customers tabla en cada base de datos. En mi máquina de desarrollo local tiene el esquema dbo ([dbo].[Customers]), pero en el entorno de prueba el esquema es test ([test].[Customers]), mientras que el esquema es ciervo en el entorno de ensayo ([stag].[Customers]) Etcétera.

Entonces, cuando implemento la aplicación en el entorno de prueba, no obtiene datos de la base de datos, porque el marco de la entidad espera que los datos se encuentren en [dbo].[Customers] pero no existe tal mesa, solo hay un [test].[Customers].

Lo sé, que puedo definir un esquema distinto de dbo, pero esto no me ayuda porque necesito un esquema diferente según el entorno de implementación.

¿Alguna sugerencia? De alguna manera, creo que terminaré pidiéndole a mi administrador de base de datos que cambie el esquema a dbo en cada base de datos en cada entorno ...

preguntado el 22 de mayo de 12 a las 19:05

De todos modos, la última opción es la mejor, porque algún día querrá usar esquemas para otros propósitos, por ejemplo, segregar partes lógicas de su modelo de datos. Y las UDF deben tener el prefijo de su nombre de esquema cuando se usan en una consulta. Bastante molesto al escribir procedimientos almacenados que usan UDF. -

1 Respuestas

Si está utilizando el código primero, debe usar un enfoque de API fluido desde la pregunta vinculada y cargar el esquema actual desde el archivo de configuración (tendrá que modificar la configuración para cada implementación).

Si está utilizando ObjectContext con EDMX, puede usar Adaptador de modelo. Otra forma que también funciona con DbContext es almacenar metadatos EF en archivos y ejecutar algún código que cambiará el esquema en el archivo ssdl al iniciar la aplicación.

contestado el 23 de mayo de 12 a las 09:05

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