Entity Framework - Code First

Nesta aula iremos aprender como fazer templates dinâmicos, tendo a possibilidade de juntar lógica de programação a um tema cadastrado na base de dados.

assinaturaAssine nossa Comunidade

Asp Net MVC - Entity Framework - Code First

O Entity Framework é utilizado para facilitar o gerenciamento do banco de dados e seus modelos.

O Entity Framework possui três estratégias:Database First, Model First e Code First

Code First

Nesta aula vamos ver a estratégia Code First no Entity framework, onde o mapeamento é feito no código, e através deste mapeamento serão gerados todos os modelos.

Vamos criar uma nova aplicação do tipo console application chamada EntityFrameworkCodeFirst e os modelos que iremos utilizar

      
        namespace EntityFrameworkCodeFirst
        {
          class Program 
          {
            static void Main(string[] args)
            {

            }
          }
        }
       
    

Criaremos uma nova classe Cliente

      
        namespace EntityFrameworkCodeFirst
        {
          public class Cliente 
          {
            public int Id { get;set };
            public string Nome { get;set };
            public string Telefone { get;set };
          }
        }
       
    

Iremos instalar o EntityFramework:

  • Menu Ferramentas -> Console do Gerencidor de Pacotes;
  • No console, digitar Install-Package EntityFramework;

Em referências do Projeto podemos verificar que foram incluídos referências do EntityFramework:

  • EntityFrameworkCodeFirst
    • Referências
      • EntityFramework
      • EntityFramework.SqlServer

No arquivo App.config, podemos verificar que ja existe a configuração do banco de dados:

      
      < ?xml version="1.0" encoding="utf-8"?>
      < configuration>
        < entityFramework>
          < defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory,EntityFramework" />
          < providers>
            < provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlServerServices, EntityFramework.SqlServer" />
          < /providers>

        < /entityFramework>

      < /configuration > 
    
    
  

Vamos criar uma nova classe que fará toda a responsabilidade de clientes na base de dados utilizando EntityFramework. O nome da classe será ClienteContext.Esta classe irá herdar de DBContext.

    
      namespace EntityFrameworkCodeFirst
      {
        class ClienteContext: DBContext
        {
          public DbSet< Cliente> clientes {get;set;}
        }
      }
     
  

Automaticamente quando executarmos a aplicação, o sistema vai verificar que temos uma conexão com o SqlServer, que existe o EntityFramework, que tem o objeto chamado cliente e possui as propriedades Id,Nome e Telefone. Será criado uma tabela Cliente no banco de dados, se não existir.

No arquivo principal, vamos chamar a classe ClienteContext, que vai criar os dados na base de dados.

    
      namespace EntityFrameworkCodeFirst
      {
        class Program 
        {
          static void Main(string[] args)
          {
            using(var context - new ClienteContext())
            {
              var quantidade_clientes = context.Clientes.Count();
              context.Clientes.Add(new Cliente() { Nome= 'Danilo', Telefone='11976144154'});
              context.saveChanges();
            }
          }
        }
      }
     
  

Agora vamos criar uma outra tabela chamada de Produtos e uma classe Produto.

    
      namespace EntityFrameworkCodeFirst
      {
        Table("Produtos")]
        public class Produto 
        {
          public int Id { get;set };
          public string Nome { get;set };
          public string Descricao { get;set };
        }
      }
     
  

No ClienteContext vamos informar que temos um novo objeto chamado Produto.

    
      namespace EntityFrameworkCodeFirst
      {
        class ClienteContext: DBContext
        {
          public DbSet< Cliente> Clientes {get;set;}
          public DbSet< Produto> Produtos {get;set;}
        }
      }
     
  

No arquivo principal, vamos salvar também o objeto Produto.

    
      namespace EntityFrameworkCodeFirst
      {
        class Program 
        {
          static void Main(string[] args)
          {
            using(var context - new ClienteContext())
            {
              var quantidade_clientes = context.Clientes.Count();
              context.Clientes.Add(new Cliente() { Nome= 'Danilo2', Telefone='11976144154'});
              context.saveChanges();

              context.Produtos.Add(new Produto() { Nome= 'Camera 2x', Descricao='teste produto'});
              context.saveChanges();
              
            }
          }
        }
      }
     
  

Como podemos notar, não foi possivel criar os dados de produtos, pois precisamos criar uma migração. Portanto, no terminal, digitar:

    
      Add-Migration Produto
     
  

Será criado um arquivo na pasta Migrations da aplicação, conforme abaixo:


      
        
        using System.Data.Entity.Migrations;

        public partial class Produto : DbMigration
        {
          public override void Up()
          {
            CreateTable( 
            "dbo.Produtos",
            c => new
              {
                Id = c.Int(nullable: false, identity: true),
                Nome = c.String(),
                Descricao = c.String(),
              })
              .PrimaryKey(t=> t.Id);
          
          }

          public override void Up()
          {
            DropTable("dbo.Produtos");
          }
            
         
        } 
      
    

Iremos executar a migration, com o comando update-database, a tabela de Produtos será criada.

      
        update-Database
       
    

Entity Framework - Code First

Nesta aula iremos aprender como fazer templates dinâmicos, tendo a possibilidade de juntar lógica de programação a um tema cadastrado na base de dados.

Próximas Aulas:
assinaturaAssine nossa Comunidade

Asp Net MVC - Entity Framework - Code First

O Entity Framework é utilizado para facilitar o gerenciamento do banco de dados e seus modelos.

O Entity Framework possui três estratégias:Database First, Model First e Code First

Code First

Nesta aula vamos ver a estratégia Code First no Entity framework, onde o mapeamento é feito no código, e através deste mapeamento serão gerados todos os modelos.

Vamos criar uma nova aplicação do tipo console application chamada EntityFrameworkCodeFirst e os modelos que iremos utilizar

      
        namespace EntityFrameworkCodeFirst
        {
          class Program 
          {
            static void Main(string[] args)
            {

            }
          }
        }
       
    

Criaremos uma nova classe Cliente

      
        namespace EntityFrameworkCodeFirst
        {
          public class Cliente 
          {
            public int Id { get;set };
            public string Nome { get;set };
            public string Telefone { get;set };
          }
        }
       
    

Iremos instalar o EntityFramework:

  • Menu Ferramentas -> Console do Gerencidor de Pacotes;
  • No console, digitar Install-Package EntityFramework;

Em referências do Projeto podemos verificar que foram incluídos referências do EntityFramework:

  • EntityFrameworkCodeFirst
    • Referências
      • EntityFramework
      • EntityFramework.SqlServer

No arquivo App.config, podemos verificar que ja existe a configuração do banco de dados:

      
      < ?xml version="1.0" encoding="utf-8"?>
      < configuration>
        < entityFramework>
          < defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory,EntityFramework" />
          < providers>
            < provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlServerServices, EntityFramework.SqlServer" />
          < /providers>

        < /entityFramework>

      < /configuration > 
    
    
  

Vamos criar uma nova classe que fará toda a responsabilidade de clientes na base de dados utilizando EntityFramework. O nome da classe será ClienteContext.Esta classe irá herdar de DBContext.

    
      namespace EntityFrameworkCodeFirst
      {
        class ClienteContext: DBContext
        {
          public DbSet< Cliente> clientes {get;set;}
        }
      }
     
  

Automaticamente quando executarmos a aplicação, o sistema vai verificar que temos uma conexão com o SqlServer, que existe o EntityFramework, que tem o objeto chamado cliente e possui as propriedades Id,Nome e Telefone. Será criado uma tabela Cliente no banco de dados, se não existir.

No arquivo principal, vamos chamar a classe ClienteContext, que vai criar os dados na base de dados.

    
      namespace EntityFrameworkCodeFirst
      {
        class Program 
        {
          static void Main(string[] args)
          {
            using(var context - new ClienteContext())
            {
              var quantidade_clientes = context.Clientes.Count();
              context.Clientes.Add(new Cliente() { Nome= 'Danilo', Telefone='11976144154'});
              context.saveChanges();
            }
          }
        }
      }
     
  

Agora vamos criar uma outra tabela chamada de Produtos e uma classe Produto.

    
      namespace EntityFrameworkCodeFirst
      {
        Table("Produtos")]
        public class Produto 
        {
          public int Id { get;set };
          public string Nome { get;set };
          public string Descricao { get;set };
        }
      }
     
  

No ClienteContext vamos informar que temos um novo objeto chamado Produto.

    
      namespace EntityFrameworkCodeFirst
      {
        class ClienteContext: DBContext
        {
          public DbSet< Cliente> Clientes {get;set;}
          public DbSet< Produto> Produtos {get;set;}
        }
      }
     
  

No arquivo principal, vamos salvar também o objeto Produto.

    
      namespace EntityFrameworkCodeFirst
      {
        class Program 
        {
          static void Main(string[] args)
          {
            using(var context - new ClienteContext())
            {
              var quantidade_clientes = context.Clientes.Count();
              context.Clientes.Add(new Cliente() { Nome= 'Danilo2', Telefone='11976144154'});
              context.saveChanges();

              context.Produtos.Add(new Produto() { Nome= 'Camera 2x', Descricao='teste produto'});
              context.saveChanges();
              
            }
          }
        }
      }
     
  

Como podemos notar, não foi possivel criar os dados de produtos, pois precisamos criar uma migração. Portanto, no terminal, digitar:

    
      Add-Migration Produto
     
  

Será criado um arquivo na pasta Migrations da aplicação, conforme abaixo:


      
        
        using System.Data.Entity.Migrations;

        public partial class Produto : DbMigration
        {
          public override void Up()
          {
            CreateTable( 
            "dbo.Produtos",
            c => new
              {
                Id = c.Int(nullable: false, identity: true),
                Nome = c.String(),
                Descricao = c.String(),
              })
              .PrimaryKey(t=> t.Id);
          
          }

          public override void Up()
          {
            DropTable("dbo.Produtos");
          }
            
         
        } 
      
    

Iremos executar a migration, com o comando update-database, a tabela de Produtos será criada.

      
        update-Database