Oracle-implementeringen av Entity framework-leverantören är mycket dålig men det finns några sätt att få detta att fungera.
-
Enkelt men irriterande - med NULL eller egen databasinitieringsimplementering:
Database.SetInitializer<DatabaseContext>(null);
eller
class DatabaseInitializer : IDatabaseInitializer<DatabaseContext>
{
public void InitializeDatabase(DatabaseContext context)
{
// your implementation
}
}
Database.SetInitializer(new DatabaseInitializer());
Ställ in den initialiserade innan första åtkomst till din databas.
- Om du vill använda migrering, skapa dina vyer och lägg sedan till migrering med ignorerande ändringar, till exempel med paketkonsolen
add-migration initial -ignorechanges
. Detta gör att EF ignorerar inkonsekvenserna mellan DB-schemat och modellen (eftersom den bara kontrollerar tabeller frånALL_TABLES
, inte vyer) så det kommer inte att försöka skapa tabell. Det finns en bugg i Oracle EF-implementeringen som om den initiala migreringen är tom tappar den och återskapar__MigrationHistory
tabell så antingen måste din första migrering innehålla minst en tabell innan du lägger till vymigreringen eller så måste du lägga till en tabell efteråt.