23ª Reunião Lisboa - 24/09/2011   http://netponto.org         Entity Framework 4.1 Code First                             ...
Patrocinadores desta reunião
Patrocinadores desta reunião
Vítor TomazISEL – LEICConsultor IndependenteNetPontoPortugal@ProgramarRevista ProgramarAzurePTHTML5PTGASP
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 ...
Introdução        Desenho          Execução      Definição das                         Objectos    Classes em código      ...
Modelo e Convenções
Convenções – Descoberta de Tipos   • Declarados no “nosso“ Context   • Registados via Fluent API   • Detectados por Reacha...
Convenções – Chave Primária    • ‘Id’ ou ‘<class name>Id’    • Do tipo ‘int’, ‘long’ ou ‘short’    • São registados como i...
Convenções – Chave Estrangeira   • Se ocorreu detecção de relação inversa   • A propriedades tem o nome:      – ‘<navigati...
Initializers e Seed
ConvençõesDatabase Initializers   – DropCreateDatabaseAlways   – DropCreateDatabaseIfModelChanges   – CreateDatabaseIfNotE...
ConvençõesSeedpublic class DemoContextInitializer:DropCreateDatabaseIfModelChanges<DemoContext>{   protected override void...
Data Annotations
Data AnnotationsPara validação• Key• Required• MaxLength• MinLength
Data AnnotationsPara mapeamento• Table               •   NotMapped• Column              •   ComplexType• ConcurrencyCheck ...
Fluent API
Fluent API• A Fluent API sobrepõe-se às Data Annotation• Oferece mais possibilidades de configuração• Usada a partir de  –...
Fluent API• PropriedadesmodelBuilder.Entity<Departmento>().Property(t => t.Nome)    .HasMaxLength(50);• TiposmodelBuilder....
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 Pro...
Futuro?•   Migrações•   Enum•   Spatial data type•   Procedimentos Armazenados•   Convenções customizáveis
Questões?
ReferênciasADO.NET Entity Framework 4.1   – http://www.msdn.com/data/ef   – NuGet – EntityFrameworkADO.NET team blog   – h...
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/1...
Obrigado!Vítor Tomazvitorbstomaz@gmail.comhttp://twitter.com/vitortomaz
Upcoming SlideShare
Loading in …5
×

[NetPonto] Entity Framework 4 Code-First

755 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
755
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

[NetPonto] Entity Framework 4 Code-First

  1. 1. 23ª Reunião Lisboa - 24/09/2011 http://netponto.org Entity Framework 4.1 Code First Vítor Tomaz
  2. 2. Patrocinadores desta reunião
  3. 3. Patrocinadores desta reunião
  4. 4. Vítor TomazISEL – LEICConsultor IndependenteNetPontoPortugal@ProgramarRevista ProgramarAzurePTHTML5PTGASP
  5. 5. Agenda• Introdução• Convenções• Data Annotations• Fluent API• O que não suporta• Futuro?
  6. 6. Introdução Model First Database First Code First
  7. 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. 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
  9. 9. Modelo e Convenções
  10. 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. 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. 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)
  13. 13. Initializers e Seed
  14. 14. ConvençõesDatabase Initializers – DropCreateDatabaseAlways – DropCreateDatabaseIfModelChanges – CreateDatabaseIfNotExistsDatabase.SetInitializer(new DropCreateDatabaseIfModelChanges<DemoContext>());
  15. 15. ConvençõesSeedpublic class DemoContextInitializer:DropCreateDatabaseIfModelChanges<DemoContext>{ protected override void Seed(DemoContext context) { context.Categorias.Add(new Categoria(){Nome="Bebidas"}); base.Seed(context); }}
  16. 16. Data Annotations
  17. 17. Data AnnotationsPara validação• Key• Required• MaxLength• MinLength
  18. 18. Data AnnotationsPara mapeamento• Table • NotMapped• Column • ComplexType• ConcurrencyCheck • ForeignKey• TimeStamp • InverseProperty• DatabaseGenerated
  19. 19. Fluent API
  20. 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. 21. Fluent API• PropriedadesmodelBuilder.Entity<Departmento>().Property(t => t.Nome) .HasMaxLength(50);• TiposmodelBuilder.Entity<Departmento>().ToTable("Deps");• RelaçõesmodelBuilder.Entity<Curso>() .HasMany(t => t.Instrutores) .WithMany(t => t.Cursos)
  22. 22. DbContext a partir de base de dados existente
  23. 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. 24. Futuro?• Migrações• Enum• Spatial data type• Procedimentos Armazenados• Convenções customizáveis
  25. 25. Questões?
  26. 26. ReferênciasADO.NET Entity Framework 4.1 – http://www.msdn.com/data/ef – NuGet – EntityFrameworkADO.NET team blog – http://blogs.msdn.com/b/adonet/MSDN Library – .NET Development -> Entity Framework 4.1
  27. 27. Patrocinadores desta reunião
  28. 28. Patrocinadores desta reunião
  29. 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! :)
  30. 30. Obrigado!Vítor Tomazvitorbstomaz@gmail.comhttp://twitter.com/vitortomaz

×