La implementación de Oracle del proveedor de Entity Framework es muy pobre, pero hay algunas formas de hacer que esto funcione.
-
Simple pero molesto:usar NULL o la implementación del inicializador de la base de datos propia:
Database.SetInitializer<DatabaseContext>(null);
o
class DatabaseInitializer : IDatabaseInitializer<DatabaseContext>
{
public void InitializeDatabase(DatabaseContext context)
{
// your implementation
}
}
Database.SetInitializer(new DatabaseInitializer());
Configure el inicializado antes del primer acceso a su base de datos.
- Si desea usar migraciones, cree sus vistas y luego agregue la migración ignorando los cambios, por ejemplo, usando la consola del paquete
add-migration initial -ignorechanges
. Esto hará que EF ignore las inconsistencias entre el esquema de la base de datos y el modelo (porque solo verifica las tablas deALL_TABLES
, no vistas) por lo que no intentará crear una tabla. Hay un error en la implementación de Oracle EF que, si la migración inicial está vacía, descarta y vuelve a crear el__MigrationHistory
table por lo que su migración inicial debe contener al menos una tabla antes de agregar la vista de migración o debe agregar una tabla después.