L'implementazione Oracle del provider del framework Entity è molto scarsa, ma ci sono alcuni modi per farlo funzionare.
-
Semplice ma fastidioso:utilizzando NULL o l'implementazione dell'inizializzatore del database:
Database.SetInitializer<DatabaseContext>(null);
o
class DatabaseInitializer : IDatabaseInitializer<DatabaseContext>
{
public void InitializeDatabase(DatabaseContext context)
{
// your implementation
}
}
Database.SetInitializer(new DatabaseInitializer());
Imposta l'inizializzato prima del primo accesso al tuo database.
- Se desideri utilizzare le migrazioni, crea le tue viste e quindi aggiungi la migrazione ignorando le modifiche, ad esempio utilizzando la console del pacchetto
add-migration initial -ignorechanges
. Ciò farà sì che EF ignori le incongruenze tra lo schema e il modello del DB (perché controlla solo le tabelle daALL_TABLES
, non viste) quindi non tenterà di creare la tabella. C'è un bug nell'implementazione di Oracle EF che se la migrazione iniziale è vuota, cade e ricrea__MigrationHistory
tabella, quindi la tua migrazione iniziale deve contenere almeno una tabella prima di aggiungere la migrazione della vista oppure devi aggiungere una tabella in seguito.