De Oracle-implementatie van de Entity Framework-provider is erg slecht, maar er zijn enkele manieren om dit te laten werken.
-
Eenvoudig maar vervelend - NULL gebruiken of een eigen database-initialisatie-implementatie gebruiken:
Database.SetInitializer<DatabaseContext>(null);
of
class DatabaseInitializer : IDatabaseInitializer<DatabaseContext>
{
public void InitializeDatabase(DatabaseContext context)
{
// your implementation
}
}
Database.SetInitializer(new DatabaseInitializer());
Stel de initialisatie in voor de eerste toegang tot uw database.
- Als u migraties wilt gebruiken, maakt u uw weergaven en voegt u vervolgens de migratie toe met het negeren van wijzigingen, bijvoorbeeld met behulp van de pakketconsole
add-migration initial -ignorechanges
. Hierdoor negeert EF de inconsistenties tussen het DB-schema en het model (omdat het alleen tabellen controleert vanALL_TABLES
, niet views), dus het zal niet proberen een tabel te maken. Er is een fout in de Oracle EF-implementatie dat als de initiële migratie leeg is, deze verdwijnt en de__MigrationHistory
opnieuw wordt aangemaakt table, dus ofwel moet uw initiële migratie minstens één tabel bevatten voordat u de viewmigratie toevoegt, ofwel moet u daarna een tabel toevoegen.