none
Dúvida ( Entity framework - Code First ) RRS feed

  • Pergunta

  • Bom dia pessoal!

    Estou iniciando no desenvolvimento em Entity framework Code First e tenho muitas dúvidas.
    Se alguém puder ajudar =)

    Seguinte, criei duas classes entregar_M e cliente_M  ( M de modelagem ).
    Criei um context com os DbSet<> para ambos, agora preciso saber o seguinte.

    no program.cs eu inseri isto:
    var db = db.Context;

    db.Database.Create(alguma coisa não me lembro de cabeça)

    Enfim.. ele criou o banco, porém agora eu preciso inserir novas colunas na classe entregador_M e inserir uma nova tabela nesse banco. Qual procedimento devo fazer? Ir direto ao banco e depois criar os campos na minha classe, ou faço os campos e tabelas novas nas classes e talvez tenha algum comando para subir essas atualizações para o meu banco, sem apagar os dados ja existentes no banco.

     Isso pode produção? =)

    quarta-feira, 26 de março de 2014 13:31

Todas as Respostas

  • Se for CodeFirst o ideal é que você use dbmigrations, dessa forma qualquer propriedade que você acrescentar ou retirar da entidade ou adicionar uma nova classe para ser sua tabela o Entity Framework atualiza seu banco de dados automaticamente. Dessa forma você só precisaria fazer um backup de segurança caso de algum problema

    Entity Framework Migrations

    http://msdn.microsoft.com/en-us/data/jj554735.aspx

    http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/migrations-and-deployment-with-the-entity-framework-in-an-asp-net-mvc-application

    Mas como provavelmente não está configt�(o no seu sistema você tem as seguintes opções.

    - Atualizar no banco de dados e criar um novo contexto Database First e remover o code first, acho o mais fácil e seguro.

    - Atualizar no banco de dados, atualizar code first, fazer backup do banco de dados atualizado, dropar o banco de dados, configurar code first para criar o banco novamente, restaurar backup, chance de dar alguém problema, mas se você já configurar o Migrations e der certo o processo, você não terá problemas futuro.

    Não sei se existe outra forma de atualizar o Banco de Dados com Code First sem ser dropando a base de dados e sem ser com Migrations do Entity Framework, pode ser que alguém poste outra solução


    quarta-feira, 26 de março de 2014 14:14
  • Opa Cesar, obrigado pelo retorno.

      Na verdade não tenho um sistema ainda, estou iniciando mesmo. Digamos que os meus sistemas atuais eu faço exatamente como entity framework trabalho com objetos etc, mas na hora de dar update e insert tem que fazer aqueles codigos gigantes, por isso quero aprender o EF.

      Como eu estou apenas iniciando os estudos criei um projeto de teste como disse acima. Esse EF Migrations ele da update de colunas em tabelas e cria tabelas no banco sem precisar droppar nada? Se essa for a solução eu já começo a estudá-la, pois quero aprender da forma mais correta =)

     

    quarta-feira, 26 de março de 2014 15:02
  • Sim, quando você configura o EF Migrations, conforme você for adicionando Entidades e propriedades, ao executar a solução o EF atualiza automaticamente

    o banco de dados no seu primeiro acesso, não é sempre que acontece, mas uma vez ou outra dá problema quando você fica adicionando e removendo muitos campos, ai na maioria destes casas tem que dropar, mas é raro acontecer.

    quarta-feira, 26 de março de 2014 17:47
  • Blz então, obrigado.. Vou estudar esse EF migrations.

    quarta-feira, 26 de março de 2014 19:14
  • Olá, bom dia a todos!

    Fui para a casa iniciei o projeto e simplesmente o EF migrations é show tanto o manual como o automatico.
    Obrigado pela dica Cesar, para que precisar o link é:

    http://msdn.microsoft.com/en-us/data/jj591621.aspx

    Abraço a todos.

    quinta-feira, 27 de março de 2014 12:04