Entity Framework Code First
-
Upload
waldyr-felix -
Category
Technology
-
view
4.695 -
download
3
description
Transcript of Entity Framework Code First
Entity Framework Code First1
Entity Framework Code First
Entity Framework Code First
2
Me apresentando
Consultor em tecnologias Microsoft
Sócio da startup Mozit
Profissional Certificado Microsoft
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
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
Entity Framework Code First
5
Convenções do Code First
Chave Primária definida como “Id” ou “CategoryId”
Relacionamento é inferido
Entity Framework Code First
6
ComeçandoEF 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ó...
Entity Framework Code First
8
Demo: Primeiros passos1. Criando as Entidades2. Criando o DbContext3. Gerenciando o contexto4. Gerando o banco de dados
Entity Framework Code First
9
Configuração de Entidades
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
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
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
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
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
Entity Framework Code First
15
Configurações avançadas
Entity Framework Code First
16
Relacionamentos 1..1
One-to-one
Entity Framework Code First
17
Relacionamentos 1..N
One-to-many
Entity Framework Code First
18
Relacionamentos N..N
Many-to-many
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
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
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>());
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); }}
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
Entity Framework Code First
24
Duvidas?
Blog: waldyrfelix.net/blog
Twitter: @WaldyrFelix
Email: [email protected]