Implementacja Oracle dostawcy frameworka Entity jest bardzo słaba, ale istnieje kilka sposobów, jak to zrobić.
-
Proste, ale denerwujące - przy użyciu NULL lub własnej implementacji inicjatora bazy danych:
Database.SetInitializer<DatabaseContext>(null);
lub
class DatabaseInitializer : IDatabaseInitializer<DatabaseContext>
{
public void InitializeDatabase(DatabaseContext context)
{
// your implementation
}
}
Database.SetInitializer(new DatabaseInitializer());
Ustaw inicjalizację przed pierwszym dostępem do bazy danych.
- Jeśli chcesz używać migracji, utwórz swoje widoki, a następnie dodaj migrację z ignorowaniem zmian, na przykład za pomocą konsoli pakietu
add-migration initial -ignorechanges
. Spowoduje to, że EF zignoruje niespójności między schematem i modelem bazy danych (ponieważ sprawdza tylko tabele zALL_TABLES
, a nie widoki), więc nie będzie próbował utworzyć tabeli. W implementacji Oracle EF występuje błąd polegający na tym, że jeśli początkowa migracja jest pusta, odrzuca i odtwarza__MigrationHistory
tabeli, więc albo początkowa migracja musi zawierać co najmniej jedną tabelę przed dodaniem migracji widoku, albo musisz dodać tabelę później.