SlideShare ist ein Scribd-Unternehmen logo
1 von 30
23ª Reunião Lisboa - 24/09/2011   http://netponto.org




         Entity Framework 4.1 Code First
                                        Vítor Tomaz
Patrocinadores desta reunião
Patrocinadores desta reunião
Vítor Tomaz
ISEL – LEIC
Consultor Independente

NetPonto
Portugal@Programar
Revista Programar
AzurePT
HTML5PT
GASP
Agenda
•   Introdução
•   Convenções
•   Data Annotations
•   Fluent API
•   O que não suporta
•   Futuro?
Introdução
             Model First
 Database
   First




                 Code First
Introdução
• EF 4.1 adiciona funcionalidades à EF 4.0
          DbContext                          Code First
            EF 4.1                             EF 4.1



              Entity Framework 4.0
                ( na .NET 4 / VisualStudio 2010 )
Introdução
        Desenho          Execução

      Definição das
                         Objectos
    Classes em código


      Definição de
     Configurações
       Adicionais       Metadata em
                         memória
       Anotações
       Fluent API
Modelo e Convenções
Convenções
 – Descoberta de Tipos
   • Declarados no “nosso“ Context
   • Registados via Fluent API
   • Detectados por Reachability (é recursiva)

 – Descoberta de Tipos Complexos
   • São considerados tipos complexos classes que:
       – Não tenham chave primária (inferida e/ou declarada)
       – Não tenham propriedades a referir outros tipos
       – Não sejam referidos por uma collection property noutro tipo
Convenções
 – Chave Primária
    • ‘Id’ ou ‘<class name>Id’
    • Do tipo ‘int’, ‘long’ ou ‘short’
    • São registados como identity columns
 – Detecção de relações inversas
    • Serão detectadas relações inversas sempre que:
       – Existir uma e apenas uma navigation property (referência ou
         colecção) em cada classe
       – Se existirem mais do que uma não ocorre detecção e teremos que
         usar DataAnnotations ou Fluent API para as definir
Convenções
 – Chave Estrangeira
   • Se ocorreu detecção de relação inversa
   • A propriedades tem o nome:
      – ‘<navigation property name><primary key property name>’
      – ‘<principal class name><primary key property name>’
      – ‘<primary key property name>’
   • Com o tipo de dados igual à chave primária da outra classe
   • A multiplicidade vai ser:
      – Opcional se a propriedade for nullable
      – Obrigatória se a propriedade não for nullable (activa também o
        Cascade Delete)
Initializers e Seed
Convenções
Database Initializers
   – DropCreateDatabaseAlways
   – DropCreateDatabaseIfModelChanges
   – CreateDatabaseIfNotExists
Database.SetInitializer(
new DropCreateDatabaseIfModelChanges<DemoContext>()
);
Convenções
Seed
public class DemoContextInitializer
:DropCreateDatabaseIfModelChanges<DemoContext>
{
   protected override void Seed(DemoContext context)
   {
   context.Categorias.Add(new Categoria(){Nome="Bebidas"});
   base.Seed(context);
   }
}
Data Annotations
Data Annotations
Para validação
• Key
• Required
• MaxLength
• MinLength
Data Annotations
Para mapeamento
• Table               •   NotMapped
• Column              •   ComplexType
• ConcurrencyCheck    •   ForeignKey
• TimeStamp           •   InverseProperty
• DatabaseGenerated
Fluent API
Fluent API
• A Fluent API sobrepõe-se às Data Annotation
• Oferece mais possibilidades de configuração
• Usada a partir de
  – OnModelCreating de DbContext
  – Classe derivada de EntityTypeConfiguration<T>
• Strongly Typed
  – permite o uso de Intellisense
Fluent API
• Propriedades
modelBuilder.Entity<Departmento>().Property(t => t.Nome)
    .HasMaxLength(50);

• Tipos
modelBuilder.Entity<Departmento>().ToTable("Deps");


• Relações
modelBuilder.Entity<Curso>()
    .HasMany(t => t.Instrutores)
    .WithMany(t => t.Cursos)
DbContext a partir de base de
     dados existente
O que não suporta
 – Customização (adição) de convenções
   • Permite remoção das convenções por defeito


 – Mapeamento de Procedimentos armazenados
   • Podem ser chamados directamente (ExecuteSqlCommand ou
     SqlQuery)


 – Migração de esquemas
   • Suporta apagar e recriar bases de dados
Futuro?
•   Migrações
•   Enum
•   Spatial data type
•   Procedimentos Armazenados
•   Convenções customizáveis
Questões?
Referências
ADO.NET Entity Framework 4.1
   – http://www.msdn.com/data/ef
   – NuGet – EntityFramework

ADO.NET team blog
   – http://blogs.msdn.com/b/adonet/


MSDN Library
   – .NET Development -> Entity Framework 4.1
Patrocinadores desta reunião
Patrocinadores desta reunião
Próximas reuniões presenciais
• 24/09/2011 – Setembro (2 anos!)
• 29/10/2011 – Outubro
• 19/11/2011 – Outubro (Coimbra)
• 26/11/2011 – Novembro
  Reserva estes dias na agenda! :)
Obrigado!
Vítor Tomaz
vitorbstomaz@gmail.com
http://twitter.com/vitortomaz

Weitere ähnliche Inhalte

Andere mochten auch

Pasteleria fina
Pasteleria finaPasteleria fina
Pasteleria finaCarmen
 
Boquillas
BoquillasBoquillas
BoquillasCarmen
 
Parallel Programming no .NET 4.0
Parallel Programming no .NET 4.0Parallel Programming no .NET 4.0
Parallel Programming no .NET 4.0Comunidade NetPonto
 
Lazy town
Lazy townLazy town
Lazy townCarmen
 
Galletas
GalletasGalletas
GalletasCarmen
 
Whinie pooh
Whinie poohWhinie pooh
Whinie poohCarmen
 
Bautizo angel estrellas
Bautizo angel estrellasBautizo angel estrellas
Bautizo angel estrellasCarmen
 
Bautizo fuente
Bautizo fuenteBautizo fuente
Bautizo fuenteCarmen
 
Introdução ao ASP .NET MVC - C. Augusto Proiete
Introdução ao ASP .NET MVC - C. Augusto ProieteIntrodução ao ASP .NET MVC - C. Augusto Proiete
Introdução ao ASP .NET MVC - C. Augusto ProieteComunidade NetPonto
 
Gelatinas
GelatinasGelatinas
GelatinasCarmen
 
Bautizo angel
Bautizo angelBautizo angel
Bautizo angelCarmen
 
De Zero a Produção - João Jesus
De Zero a Produção - João JesusDe Zero a Produção - João Jesus
De Zero a Produção - João JesusComunidade NetPonto
 
Configuração de um Portal Sharepoint 2007 e Funcionalidades de Apoio
Configuração de um Portal Sharepoint 2007 e Funcionalidades de ApoioConfiguração de um Portal Sharepoint 2007 e Funcionalidades de Apoio
Configuração de um Portal Sharepoint 2007 e Funcionalidades de ApoioComunidade NetPonto
 

Andere mochten auch (14)

Pasteleria fina
Pasteleria finaPasteleria fina
Pasteleria fina
 
Boquillas
BoquillasBoquillas
Boquillas
 
Nature
NatureNature
Nature
 
Parallel Programming no .NET 4.0
Parallel Programming no .NET 4.0Parallel Programming no .NET 4.0
Parallel Programming no .NET 4.0
 
Lazy town
Lazy townLazy town
Lazy town
 
Galletas
GalletasGalletas
Galletas
 
Whinie pooh
Whinie poohWhinie pooh
Whinie pooh
 
Bautizo angel estrellas
Bautizo angel estrellasBautizo angel estrellas
Bautizo angel estrellas
 
Bautizo fuente
Bautizo fuenteBautizo fuente
Bautizo fuente
 
Introdução ao ASP .NET MVC - C. Augusto Proiete
Introdução ao ASP .NET MVC - C. Augusto ProieteIntrodução ao ASP .NET MVC - C. Augusto Proiete
Introdução ao ASP .NET MVC - C. Augusto Proiete
 
Gelatinas
GelatinasGelatinas
Gelatinas
 
Bautizo angel
Bautizo angelBautizo angel
Bautizo angel
 
De Zero a Produção - João Jesus
De Zero a Produção - João JesusDe Zero a Produção - João Jesus
De Zero a Produção - João Jesus
 
Configuração de um Portal Sharepoint 2007 e Funcionalidades de Apoio
Configuração de um Portal Sharepoint 2007 e Funcionalidades de ApoioConfiguração de um Portal Sharepoint 2007 e Funcionalidades de Apoio
Configuração de um Portal Sharepoint 2007 e Funcionalidades de Apoio
 

Ähnlich wie Entity Framework 4 Code-First

Deep Dive sobre Entity Framework
Deep Dive sobre Entity FrameworkDeep Dive sobre Entity Framework
Deep Dive sobre Entity FrameworkLuciano Condé
 
CDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeRafael Benevides
 
Python - Programando em alto nível
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nívelIgor Sobreira
 
Entity Framework 4, Novas funcionalidades
Entity Framework 4, Novas funcionalidadesEntity Framework 4, Novas funcionalidades
Entity Framework 4, Novas funcionalidadesC. Augusto Proiete
 
Evolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicEvolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicRicardo Guerra Freitas
 
Gestão automática de configuração usando puppet
Gestão automática de configuração usando puppetGestão automática de configuração usando puppet
Gestão automática de configuração usando puppetDaniel Sobral
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHPRangel Javier
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesOziel Moreira Neto
 
Apresentação em Projeto de Sistemas – Entity Framework
Apresentação em Projeto de Sistemas – Entity FrameworkApresentação em Projeto de Sistemas – Entity Framework
Apresentação em Projeto de Sistemas – Entity FrameworkMatteus Barbosa
 
Entity Framework Code First
Entity Framework Code FirstEntity Framework Code First
Entity Framework Code FirstWaldyr Felix
 
Implementando APIs seguras na nuvem - Outubro-2018 - Azure Brasil
Implementando APIs seguras na nuvem - Outubro-2018 - Azure BrasilImplementando APIs seguras na nuvem - Outubro-2018 - Azure Brasil
Implementando APIs seguras na nuvem - Outubro-2018 - Azure BrasilRenato Groff
 

Ähnlich wie Entity Framework 4 Code-First (20)

Deep Dive sobre Entity Framework
Deep Dive sobre Entity FrameworkDeep Dive sobre Entity Framework
Deep Dive sobre Entity Framework
 
CDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpike
 
Python - Programando em alto nível
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nível
 
Aula1
Aula1Aula1
Aula1
 
Entity Framework 4, Novas funcionalidades
Entity Framework 4, Novas funcionalidadesEntity Framework 4, Novas funcionalidades
Entity Framework 4, Novas funcionalidades
 
Evolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicEvolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual Basic
 
Doctrine for dummies
Doctrine for dummiesDoctrine for dummies
Doctrine for dummies
 
Persistência JPA
Persistência JPAPersistência JPA
Persistência JPA
 
Gestão automática de configuração usando puppet
Gestão automática de configuração usando puppetGestão automática de configuração usando puppet
Gestão automática de configuração usando puppet
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
 
Palestra
PalestraPalestra
Palestra
 
Hibernate conceitos
Hibernate conceitosHibernate conceitos
Hibernate conceitos
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para Iniciantes
 
Apresentação em Projeto de Sistemas – Entity Framework
Apresentação em Projeto de Sistemas – Entity FrameworkApresentação em Projeto de Sistemas – Entity Framework
Apresentação em Projeto de Sistemas – Entity Framework
 
Entity Framework Code First
Entity Framework Code FirstEntity Framework Code First
Entity Framework Code First
 
Conhecendo o Spring
Conhecendo o SpringConhecendo o Spring
Conhecendo o Spring
 
Hibernate
HibernateHibernate
Hibernate
 
Entity Framework 7
Entity Framework 7Entity Framework 7
Entity Framework 7
 
Implementando APIs seguras na nuvem - Outubro-2018 - Azure Brasil
Implementando APIs seguras na nuvem - Outubro-2018 - Azure BrasilImplementando APIs seguras na nuvem - Outubro-2018 - Azure Brasil
Implementando APIs seguras na nuvem - Outubro-2018 - Azure Brasil
 
Jj08 otimizacao
Jj08 otimizacaoJj08 otimizacao
Jj08 otimizacao
 

Mehr von Comunidade NetPonto

Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...
Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...
Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...Comunidade NetPonto
 
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...Comunidade NetPonto
 
MVVM Light e Cimbalino Toolkits - Sara Silva
MVVM Light e Cimbalino Toolkits - Sara SilvaMVVM Light e Cimbalino Toolkits - Sara Silva
MVVM Light e Cimbalino Toolkits - Sara SilvaComunidade NetPonto
 
Deep dive into Windows Azure Mobile Services - Ricardo Costa
Deep dive into Windows Azure Mobile Services - Ricardo CostaDeep dive into Windows Azure Mobile Services - Ricardo Costa
Deep dive into Windows Azure Mobile Services - Ricardo CostaComunidade NetPonto
 
The power of templating.... with NVelocity - Nuno Cancelo
The power of templating.... with NVelocity - Nuno CanceloThe power of templating.... with NVelocity - Nuno Cancelo
The power of templating.... with NVelocity - Nuno CanceloComunidade NetPonto
 
ASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoComunidade NetPonto
 
NoSQL em Windows Azure Table Storage - Vitor Tomaz
NoSQL em Windows Azure Table Storage - Vitor TomazNoSQL em Windows Azure Table Storage - Vitor Tomaz
NoSQL em Windows Azure Table Storage - Vitor TomazComunidade NetPonto
 
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone AppsComo deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone AppsComunidade NetPonto
 
Case studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store AppsCase studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store AppsComunidade NetPonto
 
Aspect-oriented Programming (AOP) com PostSharp
Aspect-oriented Programming (AOP) com PostSharpAspect-oriented Programming (AOP) com PostSharp
Aspect-oriented Programming (AOP) com PostSharpComunidade NetPonto
 
Utilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes UnitáriosUtilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes UnitáriosComunidade NetPonto
 
Dinâmica e Motivacao de Equipas de Projecto
Dinâmica e Motivacao de Equipas de ProjectoDinâmica e Motivacao de Equipas de Projecto
Dinâmica e Motivacao de Equipas de ProjectoComunidade NetPonto
 
KnockoutJS com ASP.NET MVC3: Utilização na vida real
KnockoutJS com ASP.NET MVC3: Utilização na vida realKnockoutJS com ASP.NET MVC3: Utilização na vida real
KnockoutJS com ASP.NET MVC3: Utilização na vida realComunidade NetPonto
 
Como ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComo ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComunidade NetPonto
 
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto ProieteWindows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto ProieteComunidade NetPonto
 
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIUma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIComunidade NetPonto
 
Como não entalar os dedos nas janelas: Finger-based apps no Windows 8
Como não entalar os dedos nas janelas: Finger-based apps no Windows 8Como não entalar os dedos nas janelas: Finger-based apps no Windows 8
Como não entalar os dedos nas janelas: Finger-based apps no Windows 8Comunidade NetPonto
 

Mehr von Comunidade NetPonto (20)

Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...
Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...
Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...
 
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
 
MVVM Light e Cimbalino Toolkits - Sara Silva
MVVM Light e Cimbalino Toolkits - Sara SilvaMVVM Light e Cimbalino Toolkits - Sara Silva
MVVM Light e Cimbalino Toolkits - Sara Silva
 
Deep dive into Windows Azure Mobile Services - Ricardo Costa
Deep dive into Windows Azure Mobile Services - Ricardo CostaDeep dive into Windows Azure Mobile Services - Ricardo Costa
Deep dive into Windows Azure Mobile Services - Ricardo Costa
 
The power of templating.... with NVelocity - Nuno Cancelo
The power of templating.... with NVelocity - Nuno CanceloThe power of templating.... with NVelocity - Nuno Cancelo
The power of templating.... with NVelocity - Nuno Cancelo
 
ASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis Paulino
 
ASP.NET Signal R - Glauco Godoi
ASP.NET Signal R - Glauco GodoiASP.NET Signal R - Glauco Godoi
ASP.NET Signal R - Glauco Godoi
 
NoSQL em Windows Azure Table Storage - Vitor Tomaz
NoSQL em Windows Azure Table Storage - Vitor TomazNoSQL em Windows Azure Table Storage - Vitor Tomaz
NoSQL em Windows Azure Table Storage - Vitor Tomaz
 
HTML5 - Pedro Rosa
HTML5 - Pedro RosaHTML5 - Pedro Rosa
HTML5 - Pedro Rosa
 
OData – Super Cola W3
OData – Super Cola W3OData – Super Cola W3
OData – Super Cola W3
 
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone AppsComo deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
 
Case studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store AppsCase studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store Apps
 
Aspect-oriented Programming (AOP) com PostSharp
Aspect-oriented Programming (AOP) com PostSharpAspect-oriented Programming (AOP) com PostSharp
Aspect-oriented Programming (AOP) com PostSharp
 
Utilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes UnitáriosUtilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes Unitários
 
Dinâmica e Motivacao de Equipas de Projecto
Dinâmica e Motivacao de Equipas de ProjectoDinâmica e Motivacao de Equipas de Projecto
Dinâmica e Motivacao de Equipas de Projecto
 
KnockoutJS com ASP.NET MVC3: Utilização na vida real
KnockoutJS com ASP.NET MVC3: Utilização na vida realKnockoutJS com ASP.NET MVC3: Utilização na vida real
KnockoutJS com ASP.NET MVC3: Utilização na vida real
 
Como ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComo ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noite
 
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto ProieteWindows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
 
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIUma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
 
Como não entalar os dedos nas janelas: Finger-based apps no Windows 8
Como não entalar os dedos nas janelas: Finger-based apps no Windows 8Como não entalar os dedos nas janelas: Finger-based apps no Windows 8
Como não entalar os dedos nas janelas: Finger-based apps no Windows 8
 

Entity Framework 4 Code-First

  • 1. 23ª Reunião Lisboa - 24/09/2011 http://netponto.org Entity Framework 4.1 Code First Vítor Tomaz
  • 4. Vítor Tomaz ISEL – LEIC Consultor Independente NetPonto Portugal@Programar Revista Programar AzurePT HTML5PT GASP
  • 5. Agenda • Introdução • Convenções • Data Annotations • Fluent API • O que não suporta • Futuro?
  • 6. Introdução Model First Database First Code First
  • 7. Introdução • EF 4.1 adiciona funcionalidades à EF 4.0 DbContext Code First EF 4.1 EF 4.1 Entity Framework 4.0 ( na .NET 4 / VisualStudio 2010 )
  • 8. Introdução Desenho Execução Definição das Objectos Classes em código Definição de Configurações Adicionais Metadata em memória Anotações Fluent API
  • 10. Convenções – Descoberta de Tipos • Declarados no “nosso“ Context • Registados via Fluent API • Detectados por Reachability (é recursiva) – Descoberta de Tipos Complexos • São considerados tipos complexos classes que: – Não tenham chave primária (inferida e/ou declarada) – Não tenham propriedades a referir outros tipos – Não sejam referidos por uma collection property noutro tipo
  • 11. Convenções – Chave Primária • ‘Id’ ou ‘<class name>Id’ • Do tipo ‘int’, ‘long’ ou ‘short’ • São registados como identity columns – Detecção de relações inversas • Serão detectadas relações inversas sempre que: – Existir uma e apenas uma navigation property (referência ou colecção) em cada classe – Se existirem mais do que uma não ocorre detecção e teremos que usar DataAnnotations ou Fluent API para as definir
  • 12. Convenções – Chave Estrangeira • Se ocorreu detecção de relação inversa • A propriedades tem o nome: – ‘<navigation property name><primary key property name>’ – ‘<principal class name><primary key property name>’ – ‘<primary key property name>’ • Com o tipo de dados igual à chave primária da outra classe • A multiplicidade vai ser: – Opcional se a propriedade for nullable – Obrigatória se a propriedade não for nullable (activa também o Cascade Delete)
  • 14. Convenções Database Initializers – DropCreateDatabaseAlways – DropCreateDatabaseIfModelChanges – CreateDatabaseIfNotExists Database.SetInitializer( new DropCreateDatabaseIfModelChanges<DemoContext>() );
  • 15. Convenções Seed public class DemoContextInitializer :DropCreateDatabaseIfModelChanges<DemoContext> { protected override void Seed(DemoContext context) { context.Categorias.Add(new Categoria(){Nome="Bebidas"}); base.Seed(context); } }
  • 17. Data Annotations Para validação • Key • Required • MaxLength • MinLength
  • 18. Data Annotations Para mapeamento • Table • NotMapped • Column • ComplexType • ConcurrencyCheck • ForeignKey • TimeStamp • InverseProperty • DatabaseGenerated
  • 20. Fluent API • A Fluent API sobrepõe-se às Data Annotation • Oferece mais possibilidades de configuração • Usada a partir de – OnModelCreating de DbContext – Classe derivada de EntityTypeConfiguration<T> • Strongly Typed – permite o uso de Intellisense
  • 21. Fluent API • Propriedades modelBuilder.Entity<Departmento>().Property(t => t.Nome) .HasMaxLength(50); • Tipos modelBuilder.Entity<Departmento>().ToTable("Deps"); • Relações modelBuilder.Entity<Curso>() .HasMany(t => t.Instrutores) .WithMany(t => t.Cursos)
  • 22. DbContext a partir de base de dados existente
  • 23. O que não suporta – Customização (adição) de convenções • Permite remoção das convenções por defeito – Mapeamento de Procedimentos armazenados • Podem ser chamados directamente (ExecuteSqlCommand ou SqlQuery) – Migração de esquemas • Suporta apagar e recriar bases de dados
  • 24. Futuro? • Migrações • Enum • Spatial data type • Procedimentos Armazenados • Convenções customizáveis
  • 26. Referências ADO.NET Entity Framework 4.1 – http://www.msdn.com/data/ef – NuGet – EntityFramework ADO.NET team blog – http://blogs.msdn.com/b/adonet/ MSDN Library – .NET Development -> Entity Framework 4.1
  • 29. Próximas reuniões presenciais • 24/09/2011 – Setembro (2 anos!) • 29/10/2011 – Outubro • 19/11/2011 – Outubro (Coimbra) • 26/11/2011 – Novembro Reserva estes dias na agenda! :)