• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
[NetPonto] Entity Framework 4 Code-First
 

[NetPonto] Entity Framework 4 Code-First

on

  • 850 views

 

Statistics

Views

Total Views
850
Views on SlideShare
850
Embed Views
0

Actions

Likes
0
Downloads
6
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    [NetPonto] Entity Framework 4 Code-First [NetPonto] Entity Framework 4 Code-First Presentation Transcript

    • 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 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 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çõesDatabase Initializers – DropCreateDatabaseAlways – DropCreateDatabaseIfModelChanges – CreateDatabaseIfNotExistsDatabase.SetInitializer(new DropCreateDatabaseIfModelChanges<DemoContext>());
    • ConvençõesSeedpublic class DemoContextInitializer:DropCreateDatabaseIfModelChanges<DemoContext>{ protected override void Seed(DemoContext context) { context.Categorias.Add(new Categoria(){Nome="Bebidas"}); base.Seed(context); }}
    • Data Annotations
    • Data AnnotationsPara validação• Key• Required• MaxLength• MinLength
    • Data AnnotationsPara 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• 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)
    • 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ê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
    • 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 Tomazvitorbstomaz@gmail.comhttp://twitter.com/vitortomaz