Download - [NetPonto] Entity Framework 4 Code-First
![Page 1: [NetPonto] Entity Framework 4 Code-First](https://reader033.vdocuments.net/reader033/viewer/2022052906/558cdcd8d8b42ade118b4779/html5/thumbnails/1.jpg)
Entity Framework 4.1 Code FirstVítor Tomaz
http://netponto.org23ª Reunião Lisboa - 24/09/2011
![Page 3: [NetPonto] Entity Framework 4 Code-First](https://reader033.vdocuments.net/reader033/viewer/2022052906/558cdcd8d8b42ade118b4779/html5/thumbnails/3.jpg)
Patrocinadores desta reunião
![Page 4: [NetPonto] Entity Framework 4 Code-First](https://reader033.vdocuments.net/reader033/viewer/2022052906/558cdcd8d8b42ade118b4779/html5/thumbnails/4.jpg)
Vítor TomazISEL – LEICConsultor Independente
NetPontoPortugal@ProgramarRevista ProgramarAzurePTHTML5PTGASP
![Page 5: [NetPonto] Entity Framework 4 Code-First](https://reader033.vdocuments.net/reader033/viewer/2022052906/558cdcd8d8b42ade118b4779/html5/thumbnails/5.jpg)
Agenda
• Introdução• Convenções• Data Annotations• Fluent API• O que não suporta• Futuro?
![Page 6: [NetPonto] Entity Framework 4 Code-First](https://reader033.vdocuments.net/reader033/viewer/2022052906/558cdcd8d8b42ade118b4779/html5/thumbnails/6.jpg)
IntroduçãoDatabase
First
Model First
Code First
Base de DadosNova
Base de DadosAntiga
![Page 7: [NetPonto] Entity Framework 4 Code-First](https://reader033.vdocuments.net/reader033/viewer/2022052906/558cdcd8d8b42ade118b4779/html5/thumbnails/7.jpg)
Introdução
• EF 4.1 adiciona funcionalidades à EF 4.0
Code FirstEF 4.1
DbContextEF 4.1
Entity Framework 4.0( na .NET 4 / VisualStudio 2010 )
Code FirstEF 4.1
![Page 8: [NetPonto] Entity Framework 4 Code-First](https://reader033.vdocuments.net/reader033/viewer/2022052906/558cdcd8d8b42ade118b4779/html5/thumbnails/8.jpg)
ExecuçãoDesenho
Definição das Classes em código
Introdução
Definição de Configurações
Adicionais Metadata em memória
Objectos
Fluent API
Anotações
![Page 9: [NetPonto] Entity Framework 4 Code-First](https://reader033.vdocuments.net/reader033/viewer/2022052906/558cdcd8d8b42ade118b4779/html5/thumbnails/9.jpg)
Modelo e Convenções
demonstração
![Page 10: [NetPonto] Entity Framework 4 Code-First](https://reader033.vdocuments.net/reader033/viewer/2022052906/558cdcd8d8b42ade118b4779/html5/thumbnails/10.jpg)
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
![Page 11: [NetPonto] Entity Framework 4 Code-First](https://reader033.vdocuments.net/reader033/viewer/2022052906/558cdcd8d8b42ade118b4779/html5/thumbnails/11.jpg)
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
![Page 12: [NetPonto] Entity Framework 4 Code-First](https://reader033.vdocuments.net/reader033/viewer/2022052906/558cdcd8d8b42ade118b4779/html5/thumbnails/12.jpg)
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)
![Page 13: [NetPonto] Entity Framework 4 Code-First](https://reader033.vdocuments.net/reader033/viewer/2022052906/558cdcd8d8b42ade118b4779/html5/thumbnails/13.jpg)
Initializers e Seed
demonstração
![Page 14: [NetPonto] Entity Framework 4 Code-First](https://reader033.vdocuments.net/reader033/viewer/2022052906/558cdcd8d8b42ade118b4779/html5/thumbnails/14.jpg)
Convenções
Database Initializers–DropCreateDatabaseAlways –DropCreateDatabaseIfModelChanges –CreateDatabaseIfNotExists
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<DemoContext>());
![Page 15: [NetPonto] Entity Framework 4 Code-First](https://reader033.vdocuments.net/reader033/viewer/2022052906/558cdcd8d8b42ade118b4779/html5/thumbnails/15.jpg)
Convenções
Seed public class DemoContextInitializer
:DropCreateDatabaseIfModelChanges<DemoContext> {
protected override void Seed(DemoContext context) { context.Categorias.Add(new Categoria(){Nome="Bebidas"});base.Seed(context); }
}
![Page 16: [NetPonto] Entity Framework 4 Code-First](https://reader033.vdocuments.net/reader033/viewer/2022052906/558cdcd8d8b42ade118b4779/html5/thumbnails/16.jpg)
Data Annotations
demonstração
![Page 17: [NetPonto] Entity Framework 4 Code-First](https://reader033.vdocuments.net/reader033/viewer/2022052906/558cdcd8d8b42ade118b4779/html5/thumbnails/17.jpg)
Data Annotations
Para validação• Key• Required• MaxLength• MinLength
![Page 18: [NetPonto] Entity Framework 4 Code-First](https://reader033.vdocuments.net/reader033/viewer/2022052906/558cdcd8d8b42ade118b4779/html5/thumbnails/18.jpg)
Data Annotations
Para mapeamento• Table• Column• ConcurrencyCheck• TimeStamp• DatabaseGenerated
• NotMapped• ComplexType• ForeignKey• InverseProperty
![Page 19: [NetPonto] Entity Framework 4 Code-First](https://reader033.vdocuments.net/reader033/viewer/2022052906/558cdcd8d8b42ade118b4779/html5/thumbnails/19.jpg)
Fluent API
demonstração
![Page 20: [NetPonto] Entity Framework 4 Code-First](https://reader033.vdocuments.net/reader033/viewer/2022052906/558cdcd8d8b42ade118b4779/html5/thumbnails/20.jpg)
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
![Page 21: [NetPonto] Entity Framework 4 Code-First](https://reader033.vdocuments.net/reader033/viewer/2022052906/558cdcd8d8b42ade118b4779/html5/thumbnails/21.jpg)
Fluent API• Propriedades
• Tipos
• Relações
modelBuilder.Entity<Departmento>().Property(t => t.Nome) .HasMaxLength(50);
modelBuilder.Entity<Departmento>().ToTable("Deps");
modelBuilder.Entity<Curso>() .HasMany(t => t.Instrutores) .WithMany(t => t.Cursos)
![Page 22: [NetPonto] Entity Framework 4 Code-First](https://reader033.vdocuments.net/reader033/viewer/2022052906/558cdcd8d8b42ade118b4779/html5/thumbnails/22.jpg)
DbContext a partir de base de dados existente
demonstração
![Page 23: [NetPonto] Entity Framework 4 Code-First](https://reader033.vdocuments.net/reader033/viewer/2022052906/558cdcd8d8b42ade118b4779/html5/thumbnails/23.jpg)
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
![Page 24: [NetPonto] Entity Framework 4 Code-First](https://reader033.vdocuments.net/reader033/viewer/2022052906/558cdcd8d8b42ade118b4779/html5/thumbnails/24.jpg)
Futuro?
• Migrações• Enum • Spatial data type• Procedimentos Armazenados• Convenções customizáveis
![Page 25: [NetPonto] Entity Framework 4 Code-First](https://reader033.vdocuments.net/reader033/viewer/2022052906/558cdcd8d8b42ade118b4779/html5/thumbnails/25.jpg)
Questões?
![Page 26: [NetPonto] Entity Framework 4 Code-First](https://reader033.vdocuments.net/reader033/viewer/2022052906/558cdcd8d8b42ade118b4779/html5/thumbnails/26.jpg)
ReferênciasADO.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
![Page 28: [NetPonto] Entity Framework 4 Code-First](https://reader033.vdocuments.net/reader033/viewer/2022052906/558cdcd8d8b42ade118b4779/html5/thumbnails/28.jpg)
Patrocinadores desta reunião
![Page 29: [NetPonto] Entity Framework 4 Code-First](https://reader033.vdocuments.net/reader033/viewer/2022052906/558cdcd8d8b42ade118b4779/html5/thumbnails/29.jpg)
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! :)