L'implémentation Oracle du fournisseur de framework Entity est très médiocre, mais il existe plusieurs façons de faire fonctionner cela.
-
Simple mais ennuyeux - en utilisant NULL ou sa propre implémentation d'initialisation de base de données :
Database.SetInitializer<DatabaseContext>(null);
ou
class DatabaseInitializer : IDatabaseInitializer<DatabaseContext>
{
public void InitializeDatabase(DatabaseContext context)
{
// your implementation
}
}
Database.SetInitializer(new DatabaseInitializer());
Définissez l'initialisé avant le premier accès à votre base de données.
- Si vous souhaitez utiliser les migrations, créez vos vues, puis ajoutez la migration en ignorant les modifications, par exemple en utilisant la console de package
add-migration initial -ignorechanges
. Cela rendra EF ignorant les incohérences entre le schéma de base de données et le modèle (car il ne vérifie que les tables deALL_TABLES
, pas des vues) afin qu'il n'essaie pas de créer une table. Il existe un bogue dans l'implémentation d'Oracle EF qui, si la migration initiale est vide, supprime et recrée le__MigrationHistory
table donc soit votre migration initiale doit contenir au moins une table avant d'ajouter la migration de la vue, soit vous devez ajouter une table par la suite.