o entity Framework na abordagem de code first irá primeiro criar classes de domínio que espalharão as entidades do banco de dados
Nota:
A abordagem code first work foi adicionada na versão 4. 1
Primeiro passo: criar ou modificar as classes que futuramente serão entidades no banco de dados
Segundo passo: configurar as classes de domínio
Terceiro passo: automação/ migração baseada em código
Banco de Dados
DbContext
DbContext é uma superclasse implementada no entity Framework que contém a maioria das funções necessárias para comunicação com banco de dados Assim como comandos CRUD
ao criar uma classe que deriva de um db context é necessário implementar propriedades do tipo DbSet<tipo da entidade> para cada classe Entidade do banco de dados
acessando banco de dados
acessar o banco de dados é necessário utilizar a palavra chave using ( var contexto = new classe_de_dbcontext
dentro dessa estrutura é possível realizar comandos envolvendo a classe de contexto onde é possível acessar as entidades e "storade procedures" CRUD ou criar nossas próprias chamadas usando a linguagem LINQ
Relacionamento entre tabelas
durante a criação dessas classes que representaram entidades no banco de dados é possível identificar para o entity Framework alguns detalhes das propriedades usando a biblioteca data annotations
1 para N
para representar um relacionamento entre entidades de um para muitos é necessário ter uma propriedade de navegação de coleção na classe que receberá muitos ou n valores
Uma propriedade de navegação de coleção deve ser do tipo: iCollection<tipo da tabela a ser relacionada> nome
na classe que "dará" os valores representada por 1 deverá ter um tipo de propriedade do qual é o mesmo da chave primária da entidade relacionada e também deve ter uma propriedade virtual de mesmo tipo da Entidade relacikdonada
1 para 1
Nesse caso deve-se adicionar propriedades virtuais em ambas classes sendo cada classe do mesmo tipo da tabela a ser referenciada
Exemplo: uma classe x deve ter uma propriedade virtual da classe Y e uma classe Y deve ter uma propriedade virtual da classe X
N para N
o relacionamento entre entidades do tipo N para n Adiciona uma propriedade de navegação de coleção em cada uma das classes relacionadas sendo o tipo dessas coleções da Classe A ser referenciada
Exemplo: uma classe X deve ter uma coleção que receberá um tipo de dados da classe Y e a classe Y deve ter uma coleção que receberá o tipo de dados da classe X
Configuração
o entity Framework pode ser baixado no projeto através da interface nuget