MIGRATIONS - ATUALIZAR CAMPO

MICHAELL 08/07/2016 15:45:28
#464645
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..
KERPLUNK 08/07/2016 19:26:44
#464650
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.
MICHAELL 08/07/2016 19:34:52
#464652
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?

KERPLUNK 08/07/2016 19:43:08
#464653
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.
MICHAELL 09/07/2016 03:04:05
#464655
sim, mas será que no migrations não tem onde colocar?
para ele executar somente quando fizer essa mudança no banco?!
MICHAELL 09/07/2016 03:07:10
#464656
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
MICHAELL 09/07/2016 16:09:04
#464665
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...

  
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));
}

MICHAELL 09/07/2016 16:20:00
#464666
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
NILSONTRES 09/07/2016 19:16:14
#464667
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.
MICHAELL 10/07/2016 02:14:31
#464678
Tópico encerrado , respostas não são mais permitidas