Tengo una base de datos SqlServer Compact Edition que contiene 2 tablas.¿Puedo tener 2 contextos EntityFramework diferentes para compartir una única base de datos SqlServer Compact?
Para cada una de estas tablas, tengo una clase de contexto derivada de DbContext
que la aplicación utiliza para acceder a la tabla.
Para mantener desacoplados los diferentes componentes de la aplicación, no puedo tener una clase de contexto que tenga las propiedades DbSet
para ambas tablas. Por el contrario, necesito tener 2 clases de contexto diferentes, cada una de ellas tiene que ser completamente ajena a la otra y sus datos.
Estoy utilizando el enfoque de primer código, mi código define las entidades y el modelo, y dejo que Entity Framework cree la base de datos para mí.
Mi problema es: ¿cómo puedo permitir que Entity Framework cree la base de datos y las tablas automáticamente en la inicialización del contexto, pero aún así los 2 contextos comparten la misma base de datos y conexión?
En este momento lo que se ve es, el primer contexto crea correctamente la base de datos y la tabla en ella, pero cuando intento crear el segundo contexto, estoy consiguiendo, como era de esperar el siguiente error:
The model backing the 'SomeObjectContext' context has changed since the database
was created. Either manually delete/update the database, or call Database.SetInitializer
with an IDatabaseInitializer instance. For example, the DropCreateDatabaseIfModelChanges
strategy will automatically delete and recreate the database, and optionally seed it with
new data.
Ninguno de los IDatabaseInitializer
disponibles es apropiado para mí, porque no quiero que se elimine toda la base de datos cuando se crea el segundo contexto. Solo quiero que se cree la tabla del segundo contexto en la base de datos existente.
Cualquier consejo sobre cómo resolver esto sería apreciado.
Gracias
Se vuelve problemática en un entorno como Sql Azure donde te cobran por base de datos ... – Clement