Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oracle ODP.Net com Entity Framework 6 - ORA-00955 em Select from Table View


A implementação da Oracle do provedor de estrutura de entidade é muito ruim, mas existem algumas maneiras de fazer isso funcionar.

  1. Simples, mas irritante - usando NULL ou implementação própria do inicializador de banco de dados:
    Database.SetInitializer<DatabaseContext>(null);
    

ou
class DatabaseInitializer : IDatabaseInitializer<DatabaseContext>
{
    public void InitializeDatabase(DatabaseContext context)
    {
        // your implementation
    }
}

Database.SetInitializer(new DatabaseInitializer());

Defina o inicializado antes do primeiro acesso ao seu banco de dados.
  1. Se você quiser usar as migrações, crie suas visualizações e adicione a migração ignorando as alterações, por exemplo, usando o console de pacotes add-migration initial -ignorechanges . Isso fará com que o EF ignore as inconsistências entre o esquema de banco de dados e o modelo (porque ele verifica apenas as tabelas de ALL_TABLES , não visualizações) para que não tente criar uma tabela. Há um bug na implementação do Oracle EF que, se a migração inicial estiver vazia, ela será descartada e recriará o __MigrationHistory table então sua migração inicial deve conter pelo menos uma tabela antes de você adicionar a migração de visualização ou você precisa adicionar uma tabela posteriormente.