Oracle implementace poskytovatele Entity frameworku je velmi špatná, ale existuje několik způsobů, jak to zajistit.
-
Jednoduché, ale nepříjemné - použití NULL nebo vlastní implementace inicializátoru databáze:
Database.SetInitializer<DatabaseContext>(null);
nebo
class DatabaseInitializer : IDatabaseInitializer<DatabaseContext>
{
public void InitializeDatabase(DatabaseContext context)
{
// your implementation
}
}
Database.SetInitializer(new DatabaseInitializer());
Nastavte inicializaci před prvním přístupem k vaší databázi.
- Pokud chcete použít migrace, vytvořte si zobrazení a poté přidejte migraci s ignorováním změn, například pomocí konzoly balíčku
add-migration initial -ignorechanges
. To způsobí, že EF bude ignorovat nekonzistence mezi schématem DB a modelem (protože kontroluje pouze tabulky zALL_TABLES
, nikoli zobrazení), takže se nepokusí vytvořit tabulku. V implementaci Oracle EF je chyba, že pokud je počáteční migrace prázdná, zahodí a znovu vytvoří__MigrationHistory
tabulkou, takže buď vaše počáteční migrace musí obsahovat alespoň jednu tabulku před přidáním migrace zobrazení, nebo musíte tabulku přidat až poté.