J'ai une base de données SqlServer Compact Edition qui contient 2 tables.Puis-je avoir deux contextes EntityFramework différents partageant une seule base de données SqlServer Compact?
Pour chacune de ces tables, j'ai une classe de contexte dérivée de DbContext
qui est utilisée par l'application pour accéder à la table.
Afin de garder les différents composants de l'application découplés, je ne peux pas avoir une classe de contexte qui aurait des propriétés DbSet
pour les deux tables. Au contraire, j'ai besoin d'avoir 2 classes de contexte différentes, chacune d'entre elles doit être complètement inconsciente de l'autre et de ses données. J'utilise l'approche code-first, mon code définit les entités et le modèle, et je laisse Entity Framework créer la base de données pour moi.
Mon problème est: comment puis-je laisser Entity Framework créer automatiquement la base de données et les tables lors de l'initialisation du contexte, mais les 2 contextes partagent-ils toujours la même base de données et la même connexion?
En ce moment ce que je reçois est, le premier contexte crée avec succès la base de données et la table, mais lorsque je tente de créer le deuxième contexte, j'obtiens, sans surprise l'erreur suivante:
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.
Aucun des IDatabaseInitializer
disponibles ne me convient, car je ne veux pas que la base de données entière soit supprimée lorsque le second contexte est créé. Je veux juste que la table du second contexte soit créée dans la base de données existante.
Tout conseil sur la façon de résoudre ce problème serait apprécié.
Merci
Il obtient un problème dans un environnement comme Sql Azure où vous êtes facturé par base de données ... – Clement