Migração com Code First

Este artigo pressupõe que você já utilizou o Code First para criar um novo banco de dados. O código abaixo demonstra como isso pode ser feito:


class Program
{
    static void Main(string[] args)
    {
        using (var contexto = new EscolaContexto())
        {
            var turma = new Turma
            {
                Id = 1,
                Nome = "Universidade de Negócios de Chongqing",
                Codigo = "CTBU"
            };
            contexto.Turmas.Add(turma);
            contexto.SaveChanges();

            var consulta = from t in contexto.Turmas select t;
            foreach (var item in consulta)
            {
                Console.WriteLine(item.Nome);
            }
            Console.ReadLine();
        }
    }
}

public class Aluno
{
    [Key]
    public int Id { get; set; }
    public string Nome { get; set; }
    public string Matricula { get; set; }
    public int TurmaId { get; set; }
    public virtual Turma Turma { get; set; }
}

public class Turma
{
    [Key]
    public int Id { get; set; }
    public string Codigo { get; set; }
    public string Nome { get; set; }
    public virtual ICollection<aluno> Alunos { get; set; }
}

public class EscolaContexto : DbContext
{
    public EscolaContexto() : base("name=DbConnect") { }

    public DbSet<aluno> Alunos { get; set; }
    public DbSet<turma> Turmas { get; set; }
}
</turma></aluno></aluno>

Esse código funciona corretamente e produz o resultado esperado. No entanto, você pode ter notado que os nomes das tabelas no banco de dados terminam com "s", como "Turmas" e "Alunos". Isso é padrão do Entity Framework, que pluraliza automaticamente os nomes das tabelas com base nos nomes das classes.

Introdução às Migrações Code First

Quando modificamos o modelo de dados, também precisamos atualizar o esquema do banco de dados. Para isso, usamos uma funcionalidade chamada Code First Migrations, ou simplesmente migrações.

As migrações são um cojnunto ordenado de etapas que descrevem como atualizar (e reverter) o esquema do banco de dados. Cada etapa é chamada de "migração" e contém código que define as alterações a serem aplicadas.

Passo 1: Ativar migrações

Para ativar as migrações no contexto EscolaContexto, siga os passos:

  • Vá para Ferramentas → Gerenciador de Pacotes NuGet → Console do Gerenciadorr de Pacotes
  • No console, execute o comando: Enable-Migrations

Após executar esse comando, uma nova pasta chamada Migrations será adicionada ao projeto. Ela contém dois arquivos:

  • Configuration.cs — contém as configurações usadas pelas migrações. Neste exemplo, não será necessário alterar esse arquivo, mas ele pode ser usado para incluir dados iniciais, registrar provedores de benco de dados ou modificar o namespace das migrações.
  • <timestamp>_InitialCreate.cs — representa a migração inicial, ou seja, as alterações necessárias para criar as tabelas do zero. O Entity Framework já registra que essa migração foi aplicada no banco de dados. O prefixo de data no nome do arquivo é usado para ordenar as migrações.

Passo 2: Modificar o modelo

Agora, vamos alterar o modelo. Adicione uma nova propriedade chamada Endereco à classe Aluno:


public class Aluno
{
    [Key]
    public int Id { get; set; }
    public string Nome { get; set; }
    public string Matricula { get; set; }
    public int TurmaId { get; set; }
    public string Endereco { get; set; } // Nova propriedade
    public virtual Turma Turma { get; set; }
}

Tags: Entity Framework Code First Migrações C# banco de dados

Publicado em 9-30 03:16