Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle ODP.Net con Entity Framework 6 - ORA-00955 su Seleziona dalla visualizzazione tabella

L'implementazione Oracle del provider del framework Entity è molto scarsa, ma ci sono alcuni modi per farlo funzionare.

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

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