MIGRATIONS - ATUALIZAR CAMPO
Olá boa tarde galera
Estou utilizando Migrations, que no meu ver é fantástico....
criar classes e ver as tabelas se proliferar automaticamente é mágico...
vi muitos sites e blogs ensinando como adicionar migrations, dar update no database.. (somente o básico)
acontece que agora por exemplo, tenho um campo que era nulo, mas criei uma regra que ele não pode mais ser nulo...
já existem dados nesse campo como nulo.
antes do migration criar essa regra no banco, preciso atualizar os campos que são nulo, se nao da o seguinte erro:
Não é possÃvel inserir o valor NULL na coluna [ô]Nome[ô], tabela [ô]RepositorioMSDN.dbo.Cliente[ô]; a coluna não permite nulos. Falha em UPDATE.
A instrução foi finalizada.
Onde devo criar essa atualização no migrations?
valew abraço..
Estou utilizando Migrations, que no meu ver é fantástico....
criar classes e ver as tabelas se proliferar automaticamente é mágico...
vi muitos sites e blogs ensinando como adicionar migrations, dar update no database.. (somente o básico)
acontece que agora por exemplo, tenho um campo que era nulo, mas criei uma regra que ele não pode mais ser nulo...
já existem dados nesse campo como nulo.
antes do migration criar essa regra no banco, preciso atualizar os campos que são nulo, se nao da o seguinte erro:
Não é possÃvel inserir o valor NULL na coluna [ô]Nome[ô], tabela [ô]RepositorioMSDN.dbo.Cliente[ô]; a coluna não permite nulos. Falha em UPDATE.
A instrução foi finalizada.
Onde devo criar essa atualização no migrations?
valew abraço..
Migrations? Você está falando do Entity Framework Code First Migrations? Para fazer isso, você vai ter que usar alguma outra ferramenta para isso, como o SQL Server Managment Studio.
sim, isso mesmo...
Eu tenho o Sql Server Managment..direto até consigo
mas eu digo.. quando o sistema já estiver instalado em varios clientes... nao quero estar fazendo atualização manualmente nos clientes.
quero criar uma atualizacao de banco de dados automatico ao executar o executavel.
visto que o migrations já cria as tabelas e relacionamento automaticamente, não posso criar através do migrations o que deve ser atualizado nos campos?
Eu tenho o Sql Server Managment..direto até consigo
mas eu digo.. quando o sistema já estiver instalado em varios clientes... nao quero estar fazendo atualização manualmente nos clientes.
quero criar uma atualizacao de banco de dados automatico ao executar o executavel.
visto que o migrations já cria as tabelas e relacionamento automaticamente, não posso criar através do migrations o que deve ser atualizado nos campos?
Se ele poderia ser nulo antes e agora não pode mais, significa que podem haver vários registros com valor nulo nesse campo. Então a primeira coisa à fazer é um update geral desse campo nessa tabela para que não haja mais nulos. Use o EF mesmo.
sim, mas será que no migrations não tem onde colocar?
para ele executar somente quando fizer essa mudança no banco?!
para ele executar somente quando fizer essa mudança no banco?!
por exemplo, quando trocar uma coluna de nome.. o migration exclui a coluna e cria uma nova
como fazer pra que isso nao aconteça? para que permaneça os dados que ja estavam
como fazer pra que isso nao aconteça? para que permaneça os dados que ja estavam
Bom, depois de muita pesquisa, encontrei no site msdn que fala sobre isso:
https://msdn.microsoft.com/en-us/data/jj591621.aspx?f=255&MSPPError=-2147217396#sql
No caso, ao atualizar uma coluna que antes era null e agora not null só acrescentar uma linha de update antes da alteração...
https://msdn.microsoft.com/en-us/data/jj591621.aspx?f=255&MSPPError=-2147217396#sql
No caso, ao atualizar uma coluna que antes era null e agora not null só acrescentar uma linha de update antes da alteração...
public override void Up()
{
Sql([Ô]UPDATE dbo.Cliente SET Nome= [ô][ô] WHERE Nome IS NULL[Ô]);
AlterColumn([Ô]dbo.Cliente[Ô], [Ô]Nome[Ô], c => c.String(nullable: false, maxLength: 100, unicode: false, defaultValue: [Ô][Ô]));
}
public override void Down()
{
AlterColumn([Ô]dbo.Cliente[Ô], [Ô]Nome[Ô], c => c.String(maxLength: 100, unicode: false));
}
Citação::
por exemplo, quando trocar uma coluna de nome.. o migration exclui a coluna e cria uma nova
como fazer pra que isso nao aconteça? para que permaneça os dados que ja estavam
Respondendo essa dúvida também, é perfeitamente possÃvel permanecer os dados que já estavam, acrescentando a linha de update no Migrations Adicionado.
public override void Up()
{
AddColumn([Ô]dbo.Cliente[Ô], [Ô]UF[Ô], c => c.String(maxLength: 2, unicode: false));
Sql([Ô]UPDATE dbo.Cliente SET UF = Estado[Ô]);
DropColumn([Ô]dbo.Cliente[Ô], [Ô]Estado[Ô]);
}
public override void Down()
{
AddColumn([Ô]dbo.Cliente[Ô], [Ô]Estado[Ô], c => c.String(maxLength: 2, unicode: false));
Sql([Ô]UPDATE dbo.Cliente SET Estado = UF[Ô]);
DropColumn([Ô]dbo.Cliente[Ô], [Ô]UF[Ô]);
}
Isso vale até um video hein KERPLUNK
Alias gostaria de um vÃdeo sobre o Entity mas em vb.net, porque o que vi até agora, não sei é porque estavam e c# que detesto, mas não entendi nada.
Tópico encerrado , respostas não são mais permitidas