A implementação da Oracle do provedor de estrutura de entidade é muito ruim, mas existem algumas maneiras de fazer isso funcionar.
-
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.
- 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 deALL_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.