Oracle-implementeringen af Entity framework-udbyderen er meget dårlig, men der er nogle måder at få dette til at fungere på.
-
Enkel, men irriterende - ved at bruge NULL eller egen databaseinitialiseringsimplementering:
Database.SetInitializer<DatabaseContext>(null);
eller
class DatabaseInitializer : IDatabaseInitializer<DatabaseContext>
{
public void InitializeDatabase(DatabaseContext context)
{
// your implementation
}
}
Database.SetInitializer(new DatabaseInitializer());
Indstil den initialiserede før første adgang til din database.
- Hvis du vil bruge migreringer, skal du oprette dine visninger og derefter tilføje migrering med ignorering af ændringer, for eksempel ved hjælp af pakkekonsollen
add-migration initial -ignorechanges
. Dette vil få EF til at ignorere uoverensstemmelserne mellem DB-skemaet og modellen (fordi den kun kontrollerer tabeller fraALL_TABLES
, ikke visninger), så den vil ikke forsøge at oprette tabel. Der er en fejl i Oracle EF-implementeringen, at hvis den indledende migrering er tom, falder den og genskaber__MigrationHistory
tabel, så enten skal din indledende migrering indeholde mindst én tabel, før du tilføjer visningsmigreringen, eller også skal du tilføje en tabel bagefter.