Entity
    Framework
    Code First



1        Entity Framework Code First
2




Me apresentando
 Consultor   em tecnologias Microsoft

 Sócio   da startup Mozit

 Profissional   Certificado Microsoft




                                    Entity Framework Code First
3




Novidades do EF Code First
 Possibilidade de fazer tudo via código
 Significa que funciona sem EDMX
 Mais produtividade
 Controle absoluto do código
 Criação simplificada do DbContext
 Entidades limpas
 Geração automática do banco de
  dados
                                Entity Framework Code First
4




Como funciona o Code First
   Enquanto os outros métodos geram meta
    dados em memória a partir do EDMX
       XML ->
        EntityType, AssociationType, EdmType, etc
   Code First gera os mesmos meta dados a
    partir do código
       Classes ->
        EntityType, AssociationType, EdmType, Databas
        e, etc
   Para isso o EF Code First usa Data Annotations
    e/ou Fluent API
                                         Entity Framework Code First
5




Convenções do Code First



                                 Chave Primária definida como
                                     “Id” ou “CategoryId”




 Relacionamento é inferido
                                      Entity Framework Code First
6




Começando
EF Code First


                    Entity Framework Code First
7




Instalando o Code First
1.   Opção: via download no site
        http://msdn.com/data/ef
        Baixar e instalar
        Referenciar DLL no projeto


2.   Opção: via NuGet
        PM> Install-Package EntityFramework
        E só...

                                      Entity Framework Code First
8




Demo: Primeiros passos
1.   Criando as Entidades
2.   Criando o DbContext
3.   Gerenciando o contexto
4.   Gerando o banco de dados




                                Entity Framework Code First
9




Configuração de
Entidades


                  Entity Framework Code First
10




Porque configurar
mapeamentos?
 Quando  as convenções não atendem
 aos requisitos
    Acontece frequentemente por sinal
    Exemplo: string mapeado para
     nvarchar(max)
 Melhorar performance do banco
 Mudar tipos de dados que precisamos
  usar

                                 Entity Framework Code First
11




Tipos de mapeamentos
  Data Annotations         Fluent API
 Usa atributos nas    Usa métodos
  classes e             encadeados fora
  propriedades          das entidades
 “Suja” o model       Necessário mais
  com metadados         código




                                 Entity Framework Code First
12




Fluent vs Data Annotations
    Data Annotation                Fluent API
   Configuração na própria       Configuração separada
    entidade                       da entidade
   Dá pra usar uma classe        Possibilidade de separar
    separada como                  as configurações por
    Metadata                       arquivo
   Configuração por              Facilidade natural da
    Atributos                      programação fluente
   Aumenta o tamanho das         Aumenta o número de
    classes                        arquivo necessários

                                           Entity Framework Code First
13




Demo: Configurando com
Data Annotation
1.   Definindo uma chave
2.   Definindo tamanho máximo
3.   Definindo campos obrigatórios (not null)
4.   Visualizando alterações na base




                                  Entity Framework Code First
14




Demo: Configurando com
  Fluent API
1.   Definindo tamanho máximo
2.   Definindo campos obrigatórios (not null)
3.   Definindo nome da tabela e colunas
4.   Definindo tipo das colunas
5.   Usando tipos complexos




                                  Entity Framework Code First
15




Configurações
avançadas


                 Entity Framework Code First
16




  Relacionamentos 1..1
One-to-one




                    Entity Framework Code First
17




 Relacionamentos 1..N

One-to-many




                   Entity Framework Code First
18




Relacionamentos N..N

Many-to-many




                    Entity Framework Code First
19




Separando as configurações
 Quanto  mais entidades tiver meu projeto
  maior e mais confuso vai ficar meu
  OnModelCreating
 Solução: Criar configurações específicas
  de cada entidade em sua própria classe
  de configuração
    Deve herdar de EntityTypeConfiguration
    As configurações passam para o construtor
     dessa classe
                                  Entity Framework Code First
20




Demo: Definindo
configurações de entidades
1.   Criando classes de configuração
2.   Realizando as configurações
3.   Deixando as configurações visiveis ao EF
4.   Configurando o relacionamento




                                  Entity Framework Code First
21




      Estratégias de criação da
      base
É possivel modificar a forma como o EF cria o
  banco de dados através da classe Database
 Os métodos possiveis são:
     DropCreateDatabaseAlways
     CreateDatabaseIfNotExists
     DropCreateDatabaseIfModelChanges

Database.SetInitializer(
  new DropCreateDatabaseIfModelChanges<DemoContext>());

                                     Entity Framework Code First
22




    Carregando base com dados
    iniciais
class DemoInitialize : CreateDatabaseIfNotExist<Context>
{
   protected override void Seed(Context context){

        context.Categories.Add(
               new Category {
                      Name = "Sapatos",
                      IsActive = true
               });
        context.SaveChanges();

        base.Seed(context);
    }                                     Entity Framework Code First
}
23




Demo: Configurando a
inicialização
1.   Criando inicialização da base
2.   Customizando inicialização da base
3.   Visualizando dados criados na base




                                Entity Framework Code First
24




      Duvidas?


Blog: waldyrfelix.net/blog
Twitter: @WaldyrFelix
Email: waldyrfelix@gmail.com

                                  Entity Framework Code First

Entity Framework Code First

  • 1.
    Entity Framework Code First 1 Entity Framework Code First
  • 2.
    2 Me apresentando  Consultor em tecnologias Microsoft  Sócio da startup Mozit  Profissional Certificado Microsoft Entity Framework Code First
  • 3.
    3 Novidades do EFCode First  Possibilidade de fazer tudo via código  Significa que funciona sem EDMX  Mais produtividade  Controle absoluto do código  Criação simplificada do DbContext  Entidades limpas  Geração automática do banco de dados Entity Framework Code First
  • 4.
    4 Como funciona oCode First  Enquanto os outros métodos geram meta dados em memória a partir do EDMX  XML -> EntityType, AssociationType, EdmType, etc  Code First gera os mesmos meta dados a partir do código  Classes -> EntityType, AssociationType, EdmType, Databas e, etc  Para isso o EF Code First usa Data Annotations e/ou Fluent API Entity Framework Code First
  • 5.
    5 Convenções do CodeFirst Chave Primária definida como “Id” ou “CategoryId” Relacionamento é inferido Entity Framework Code First
  • 6.
    6 Começando EF Code First Entity Framework Code First
  • 7.
    7 Instalando o CodeFirst 1. Opção: via download no site  http://msdn.com/data/ef  Baixar e instalar  Referenciar DLL no projeto 2. Opção: via NuGet  PM> Install-Package EntityFramework  E só... Entity Framework Code First
  • 8.
    8 Demo: Primeiros passos 1. Criando as Entidades 2. Criando o DbContext 3. Gerenciando o contexto 4. Gerando o banco de dados Entity Framework Code First
  • 9.
    9 Configuração de Entidades Entity Framework Code First
  • 10.
    10 Porque configurar mapeamentos?  Quando as convenções não atendem aos requisitos  Acontece frequentemente por sinal  Exemplo: string mapeado para nvarchar(max)  Melhorar performance do banco  Mudar tipos de dados que precisamos usar Entity Framework Code First
  • 11.
    11 Tipos de mapeamentos Data Annotations Fluent API  Usa atributos nas  Usa métodos classes e encadeados fora propriedades das entidades  “Suja” o model  Necessário mais com metadados código Entity Framework Code First
  • 12.
    12 Fluent vs DataAnnotations Data Annotation Fluent API  Configuração na própria  Configuração separada entidade da entidade  Dá pra usar uma classe  Possibilidade de separar separada como as configurações por Metadata arquivo  Configuração por  Facilidade natural da Atributos programação fluente  Aumenta o tamanho das  Aumenta o número de classes arquivo necessários Entity Framework Code First
  • 13.
    13 Demo: Configurando com DataAnnotation 1. Definindo uma chave 2. Definindo tamanho máximo 3. Definindo campos obrigatórios (not null) 4. Visualizando alterações na base Entity Framework Code First
  • 14.
    14 Demo: Configurando com Fluent API 1. Definindo tamanho máximo 2. Definindo campos obrigatórios (not null) 3. Definindo nome da tabela e colunas 4. Definindo tipo das colunas 5. Usando tipos complexos Entity Framework Code First
  • 15.
    15 Configurações avançadas Entity Framework Code First
  • 16.
    16 Relacionamentos1..1 One-to-one Entity Framework Code First
  • 17.
    17 Relacionamentos 1..N One-to-many Entity Framework Code First
  • 18.
    18 Relacionamentos N..N Many-to-many Entity Framework Code First
  • 19.
    19 Separando as configurações Quanto mais entidades tiver meu projeto maior e mais confuso vai ficar meu OnModelCreating  Solução: Criar configurações específicas de cada entidade em sua própria classe de configuração  Deve herdar de EntityTypeConfiguration  As configurações passam para o construtor dessa classe Entity Framework Code First
  • 20.
    20 Demo: Definindo configurações deentidades 1. Criando classes de configuração 2. Realizando as configurações 3. Deixando as configurações visiveis ao EF 4. Configurando o relacionamento Entity Framework Code First
  • 21.
    21 Estratégias de criação da base É possivel modificar a forma como o EF cria o banco de dados através da classe Database  Os métodos possiveis são:  DropCreateDatabaseAlways  CreateDatabaseIfNotExists  DropCreateDatabaseIfModelChanges Database.SetInitializer( new DropCreateDatabaseIfModelChanges<DemoContext>()); Entity Framework Code First
  • 22.
    22 Carregando base com dados iniciais class DemoInitialize : CreateDatabaseIfNotExist<Context> { protected override void Seed(Context context){ context.Categories.Add( new Category { Name = "Sapatos", IsActive = true }); context.SaveChanges(); base.Seed(context); } Entity Framework Code First }
  • 23.
    23 Demo: Configurando a inicialização 1. Criando inicialização da base 2. Customizando inicialização da base 3. Visualizando dados criados na base Entity Framework Code First
  • 24.
    24 Duvidas? Blog: waldyrfelix.net/blog Twitter: @WaldyrFelix Email: waldyrfelix@gmail.com Entity Framework Code First