sql >> Base de Datos >  >> RDS >> Oracle

Oracle ODP.Net con Entity Framework 6 - ORA-00955 en Seleccionar desde vista de tabla

La implementación de Oracle del proveedor de Entity Framework es muy pobre, pero hay algunas formas de hacer que esto funcione.

  1. 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.

  1. 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 de ALL_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.