9
respostas

Entity no CodeFirst - Desviar a criação do Database

Olá,

Alguém sabe como fazer um desvia para que o Entity não execute o comando Create Database no modo CodeFirst?

9 respostas

Olá, Richard!

Geralmente o Entity Framework é inteligente o bastante para criar um banco de dados somente se ele ainda não existe, caso contrário ele ignora o comando create database e começa a aplicar as migrações no banco de dados já existente. Pode falar um pouco mais sobre o seu problema para nós?

Olá Richard,

O que você pode fazer é pedir para o entity ignorar sua classe context na inicialização usando o seguinte código Database.SetInitializer<NomeDaSuaClasseContext>(null);. Aqui um link com um exemplo de como faz.

Olá,

Lucas, Obrigado pelo retorno!! Irei efetuar testes com este código.

Marcelo, No meu caso, estou utilizando como banco de dados o InterSystem Caché, e estou tendo dificuldades em utilizar o Entity para criar as tabelas.

Olá, Richard

Não conhecia ainda o InterSystems Caché, mas acabei encontrando esse pequeno tutorial para criar 2 tabelas com Code First no EF:

http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GBMP_eframe#GBMP_eframe_codefirst

Por acaso é esse exemplo que você está tentando fazer funcionar? Se for, qual exatamente o erro que está obtendo? Se não for, recomendo começar por ele, para ter algo bem simples e testado pela InterSystems, antes de partir para um projeto mais complexo.

Este exemplo que eu tentei, vou fazer novos testes com ele e retorno.

Identifiquei o problema.

Quando o Entity executa create database "baseexemplo", o Caché não aceita as aspas duplas.

Fiz um teste executando sem as aspas duplas diretamente do painel de controle do mesmo e aceitou o comando create database baseexemplo.

Agora só resta saber como retirar as aspas duplas

No mesmo documento da Intersystems encontrei esse trecho, será que isso resolve o problema das aspas?

Select System > Configuration > SQL and Object Settings > TSQL Compatability Settings Set the DIALECT to MSSQL. Set QUOTED_IDENTIFIER to ON. Click Save.

isto ajudou, mas tive que ativar outras configurações de SQL no painel.

chegou a criar a base de dados, tabelas, porém não gerou a Migration, e está retornando o erro 'VARBINARY' não é um tipo suportado para CAST

Olá,

O problema acima que mencionei é no SQL abaixo. Fiz um teste retirando o comando cast e inserindo apenas o conteúdo, com isso este insert funciona.

Há alguma maneira de retirar este cast

Insert que não funciona:

insert "dbo"."__MigrationHistory"("MigrationId", "ContextKey", "Model", "ProductVersion") VALUES ('201706131048154_InitialCreate', 'CACHE2.SchoolContext', cast( 0x1F8B0800000000000400CD59CD6EE33610BE17E83B083A1 ... D89CC74FF4E1285E7DF81769242CE52E1F0000 as varbinary(1549)), '6.1.3-40302')

Insert que funciona:

insert "dbo"."__MigrationHistory"("MigrationId", "ContextKey", "Model", "ProductVersion") VALUES ('201706131048154_InitialCreate', 'CACHE2.SchoolContext', '0x1F8B0800000000000400CD59CD6EE33610BE17E83B083A1 ... D89CC74FF4E1285E7DF81769242CE52E1F0000 ', '6.1.3-40302')

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software