Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle ODP.Net avec Entity Framework 6 - ORA-00955 sur Select from Table View

L'implémentation Oracle du fournisseur de framework Entity est très médiocre, mais il existe plusieurs façons de faire fonctionner cela.

  1. 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.

  1. 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 de ALL_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.