.NET Artigos

Entityframework usando C# e a tecnica de CODE FIRST

O Entity Framework é um framework de mapeamento objeto-relacional (ORM) que permite aos desenvolvedores trabalhar com dados relacionais usando objetos e consultas em linguagem natural. Com a técnica Code First, o desenvolvedor cria a estrutura do banco de dados através do código, permitindo que o Entity Framework gere o banco de dados a partir do código.

A seguir, mostraremos como usar o Entity Framework com a técnica Code First para criar e gerenciar um banco de dados em uma aplicação .NET.

Passo 1: Instale o Entity Framework Antes de começar a usar o Entity Framework, é preciso instalar o pacote correspondente ao projeto. No Visual Studio, clique com o botão direito do mouse no projeto e selecione “Gerenciador de Pacotes do NuGet”. Na janela que aparece, pesquise pelo pacote “EntityFramework” e selecione “Instalar”.

Passo 2: Crie as classes de entidade As classes de entidade são classes que representam as tabelas do banco de dados. Cada classe deve ter propriedades que correspondam às colunas da tabela. Por exemplo, para criar uma tabela “Clientes” com as colunas “Id”, “Nome” e “Email”, é possível criar a seguinte classe:


public class Cliente
{
public int Id { get; set; }
public string Nome { get; set; }
public string Email { get; set; }
}

Passo 3: Crie o contexto do banco de dados
O contexto do banco de dados é a classe que gerencia as operações de banco de dados, como adicionar, excluir e atualizar registros. Ele também é responsável por criar o banco de dados e suas tabelas. Para criar o contexto, crie uma nova classe que herde de DbContext, como no exemplo abaixo:

public class MeuContexto : DbContext
{
    public DbSet<Cliente> Clientes { get; set; }
}

A propriedade DbSet representa uma tabela do banco de dados. No exemplo acima, há apenas uma tabela chamada “Clientes”.

Passo 4: Configure o banco de dados É possível configurar o banco de dados através da classe de contexto. Por exemplo, é possível definir o nome do banco de dados, a conexão com o banco de dados e outras opções de configuração. Para fazer isso, sobrescreva o método OnModelCreating da classe de contexto, como no exemplo abaixo:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Cliente>().ToTable("Clientes");
    base.OnModelCreating(modelBuilder);
}

No exemplo acima, definimos o nome da tabela como “Clientes”.

Passo 5: Use o contexto para acessar o banco de dados Agora que as classes de entidade e o contexto do banco de dados foram criados, é possível usar o contexto para acessar o banco de dados. Por exemplo, para adicionar um novo cliente, é possível criar uma nova instância da classe Cliente e adicioná-la ao contexto:

using (var db = new MeuContexto())
{
var cliente = new Cliente { Nome = "João", Email = "joao@example.com" };
db.Clientes.Add(cliente);
db.SaveChanges();
}

No exemplo acima, criamos uma nova instância do contexto, adicionamos um novo cliente e salvamos as alterações no banco de dados.

Ai vocês perguntam, e se as entidades tiverem relacionamentos ? por exemplo: um cliente pode ter apenas um endereço, mas pode ter vários telefones.

Se a entidade tiver relacionamentos, é possível configurá-los através da técnica Code First do Entity Framework. Para isso, é necessário definir as propriedades de navegação e chaves estrangeiras nas classes de entidade.

No exemplo, em que um cliente pode ter muitos telefones e somente um endereço, é possível criar as classes de entidade da seguinte forma:

public class Cliente
{
    public int Id { get; set; }
    public string Nome { get; set; }
    public string Email { get; set; }
    public virtual Endereco Endereco { get; set; }
    public virtual ICollection<Telefone> Telefones { get; set; }
}

public class Endereco
{
    public int Id { get; set; }
    public string Logradouro { get; set; }
    public string Cidade { get; set; }
    public string Estado { get; set; }
    public string Cep { get; set; }
}

public class Telefone
{
    public int Id { get; set; }
    public string Numero { get; set; }
}

Na classe Cliente, há duas propriedades de navegação: Endereco e Telefones. A propriedade Endereco é virtual, o que significa que ela será carregada de forma preguiçosa pelo Entity Framework. A propriedade Telefones é uma coleção de telefones, representando a relação de um para muitos entre um cliente e seus telefones.

Para configurar as chaves estrangeiras, é necessário sobrescrever o método OnModelCreating da classe de contexto, como no exemplo abaixo:

No exemplo acima, estamos definindo que a propriedade Endereco é opcional (pode ser nula) e a propriedade Telefones é obrigatória (não pode ser nula). A chave estrangeira da propriedade Endereco é definida como “EnderecoId” e a chave estrangeira da propriedade Telefones é definida como “ClienteId”.


protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Cliente>()
        .HasOptional(c => c.Endereco)
        .WithRequired()
        .Map(m => m.MapKey("EnderecoId"));

    modelBuilder.Entity<Cliente>()
        .HasMany(c => c.Telefones)
        .WithRequired()
        .HasForeignKey(t => t.ClienteId);

    base.OnModelCreating(modelBuilder);
}

Com essa configuração, é possível acessar os dados relacionados de forma simples, como no exemplo abaixo:

using (var db = new MeuContexto())
{
    var cliente = new Cliente
    {
        Nome = "João",
        Email = "joao@example.com",
        Endereco = new Endereco
        {
            Logradouro = "Rua das Flores",
            Cidade = "São Paulo",
            Estado = "SP",
            Cep = "01010-010"
        },
        Telefones = new List<Telefone>
        {
            new Telefone { Numero = "(11) 1234-5678" },
            new Telefone { Numero = "(11) 9876-5432" }
        }
    };

    db.Clientes.Add(cliente);
    db.SaveChanges();
}

No exemplo acima, criamos um novo cliente com um endereço e dois telefones. O Entity Framework é capaz de salvar todas as entidades relacionadas no banco de dados de forma automática.

Conclusão

A técnica Code First do Entity Framework é uma ótima opção para desenvolvedores que desejam criar e gerenciar bancos de dados usando o código, sem a necessidade de escrever SQL manualmente. Com o Entity Framework, é possível criar classes de entidade e um contexto do banco de dados para gerenciar as operações de banco de dados. Além disso, é possível configurar o banco de dados através da classe de contexto e usar o contexto para acessar o banco de dados. Com essas ferramentas, o desenvolvimento de aplicativos pode ser muito mais fácil e eficiente.

Lucas Dalcolmo

About Author

Sou desenvolvedor de software a mais de 13 anos com experiência nacioanl e internacional. Já produzi softwares para grandes empresas no Brasil e também bancos em Portugal. Possuo as certificações microsoft AZ-900, DP-900, AI-900 e AZ-204 (azure developer associate). Sou fundador da Dallm Games Studio (@dallmgamesstudio) e fui mentor em vários eventos de desenvolvimento de jogos. Também fui mentor do NASA SPACE JAM 2024 na área de desenvolvimento de software.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Receba as últimas notícias por email

    Cadastre-se, receba nossas novidades em primeira mão por email, antes de todo mundo.

    Codeinsider @2025. Todos os direitos reservados.

    Desenvolvido por House Comunicação