1. Entity
Framework
Code First
1 Entity Framework Code First
2. 2
Me apresentando
Consultor em tecnologias Microsoft
Sócio da startup Mozit
Profissional Certificado Microsoft
Entity Framework Code First
3. 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
Entity Framework Code First
4. 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, Databas
e, etc
Para isso o EF Code First usa Data Annotations
e/ou Fluent API
Entity Framework Code First
5. 5
Convenções do Code First
Chave Primária definida como
“Id” ou “CategoryId”
Relacionamento é inferido
Entity Framework Code First
7. 7
Instalando o Code First
1. 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ó...
Entity Framework Code First
8. 8
Demo: Primeiros passos
1. Criando as Entidades
2. Criando o DbContext
3. Gerenciando o contexto
4. Gerando o banco de dados
Entity Framework Code First
10. 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
Entity Framework Code First
11. 11
Tipos de mapeamentos
Data Annotations Fluent API
Usa atributos nas Usa métodos
classes e encadeados fora
propriedades das entidades
“Suja” o model Necessário mais
com metadados código
Entity Framework Code First
12. 12
Fluent vs Data Annotations
Data Annotation Fluent API
Configuração na própria Configuração separada
entidade da entidade
Dá pra usar uma classe Possibilidade de separar
separada como as configurações por
Metadata arquivo
Configuração por Facilidade natural da
Atributos programação fluente
Aumenta o tamanho das Aumenta o número de
classes arquivo necessários
Entity Framework Code First
13. 13
Demo: Configurando com
Data Annotation
1. Definindo uma chave
2. Definindo tamanho máximo
3. Definindo campos obrigatórios (not null)
4. Visualizando alterações na base
Entity Framework Code First
14. 14
Demo: Configurando com
Fluent API
1. Definindo tamanho máximo
2. Definindo campos obrigatórios (not null)
3. Definindo nome da tabela e colunas
4. Definindo tipo das colunas
5. Usando tipos complexos
Entity Framework Code First
19. 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
Entity Framework Code First
20. 20
Demo: Definindo
configurações de entidades
1. Criando classes de configuração
2. Realizando as configurações
3. Deixando as configurações visiveis ao EF
4. Configurando o relacionamento
Entity Framework Code First
21. 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>());
Entity Framework Code First
22. 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);
} Entity Framework Code First
}
23. 23
Demo: Configurando a
inicialização
1. Criando inicialização da base
2. Customizando inicialização da base
3. Visualizando dados criados na base
Entity Framework Code First