Entity Framework Code First

24
Entity Framework Code First 1 Entity Framework Code First

description

Slides da palestra no evento DevBrasil Open Day 2011 em Natal.

Transcript of Entity Framework Code First

Page 1: Entity Framework Code First

Entity Framework Code First1

Entity Framework Code First

Page 2: Entity Framework Code First

Entity Framework Code First

2

Me apresentando

Consultor em tecnologias Microsoft

Sócio da startup Mozit

Profissional Certificado Microsoft

Page 3: Entity Framework Code First

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

Page 4: Entity Framework Code First

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, Database, etc Para isso o EF Code First usa Data

Annotations e/ou Fluent API

Page 5: Entity Framework Code First

Entity Framework Code First

5

Convenções do Code First

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

Relacionamento é inferido

Page 6: Entity Framework Code First

Entity Framework Code First

6

ComeçandoEF Code First

Page 7: Entity Framework Code First

Entity Framework Code First

7

Instalando o Code First1. 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ó...

Page 8: Entity Framework Code First

Entity Framework Code First

8

Demo: Primeiros passos1. Criando as Entidades2. Criando o DbContext3. Gerenciando o contexto4. Gerando o banco de dados

Page 9: Entity Framework Code First

Entity Framework Code First

9

Configuração de Entidades

Page 10: Entity Framework Code First

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

Page 11: Entity Framework Code First

Entity Framework Code First

11

Tipos de mapeamentosData Annotations

Usa atributos nas classes e propriedades

“Suja” o model com metadados

Fluent API Usa métodos

encadeados fora das entidades

Necessário mais código

Page 12: Entity Framework Code First

Entity Framework Code First

12

Fluent vs Data Annotations

Data Annotation Configuração na própria

entidade Dá pra usar uma classe

separada como Metadata

Configuração por Atributos

Aumenta o tamanho das classes

Fluent API Configuração separada

da entidade Possibilidade de separar

as configurações por arquivo

Facilidade natural da programação fluente

Aumenta o número de arquivo necessários

Page 13: Entity Framework Code First

Entity Framework Code First

13

Demo: Configurando com Data Annotation1. Definindo uma chave2. Definindo tamanho máximo3. Definindo campos obrigatórios (not

null)4. Visualizando alterações na base

Page 14: Entity Framework Code First

Entity Framework Code First

14

Demo: Configurando com Fluent API

1. Definindo tamanho máximo2. Definindo campos obrigatórios (not

null)3. Definindo nome da tabela e colunas4. Definindo tipo das colunas5. Usando tipos complexos

Page 15: Entity Framework Code First

Entity Framework Code First

15

Configurações avançadas

Page 16: Entity Framework Code First

Entity Framework Code First

16

Relacionamentos 1..1

One-to-one

Page 17: Entity Framework Code First

Entity Framework Code First

17

Relacionamentos 1..N

One-to-many

Page 18: Entity Framework Code First

Entity Framework Code First

18

Relacionamentos N..N

Many-to-many

Page 19: Entity Framework Code First

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

Page 20: Entity Framework Code First

Entity Framework Code First

20

Demo: Definindo configurações de entidades

1. Criando classes de configuração2. Realizando as configurações3. Deixando as configurações visiveis ao

EF4. Configurando o relacionamento

Page 21: Entity Framework Code First

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>());

Page 22: Entity Framework Code First

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); }}

Page 23: Entity Framework Code First

Entity Framework Code First

23

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

Page 24: Entity Framework Code First

Entity Framework Code First

24

Duvidas?

Blog: waldyrfelix.net/blog

Twitter: @WaldyrFelix

Email: [email protected]