Entity Framework: Convenções (Conventions)

Comecei trabalhar com Entity Framework a pouco tempo. Como disse algumas vezes em minhas redes sociais, eu tenho uma relação de amor e ódio com esse framework. Isso porquê tem horas que me sinto amarrado, e outra que parece ser 10 vezes mais veloz desenvolver com ele do que usando ADO.NET.
 
Enfim, nos meus primeiros contatos fui apresentado a um super facilitador do EF, as Convenções. Convenções são conjuntos de regras que são usadas para configurar automaticamente um modelo conceitual com base em definições de classe. As convenções são definidas no namespace System.Data.Entity.ModelConfiguration.Conventions.
 
Essas convenção se comportam da mesma maneira que no ASP.NET MVC. Através da formatação da nomenclatura de sua classe, propriedade ou variável, o Entity Framework já irá entender de qual entidade do banco de dados está se referindo. E para deixar tudo ainda mais claro, no Entity Framework existem alguns tipos de convenções.

Chave Primária (Primary Key)

Essa convenção rege que uma propriedade é uma chave primária se, em uma classe, é chamada “ID” (não é caso sensitivo), ou se é chamada pelo nome da classe seguido por “ID”. Se o tipo da propriedade chave primária for numérico ou GUID será configurado como uma coluna de identidade.
1
2
3
4
5
public class Usuario
{
    public int UsuarioID { get; set; }
    //... outras propriedades
}

Relacionamento (Relationship)

Podemos também instruir ao EF onde existem e quais tipos de relacionamentos estão sendo aplicados nas entidades do banco de dados. Apenas usando as regras de convenções, podemos informar se o relacionamento aplicado é <um-para-um>,<um-para-muitos>, ou <muitos-para-muitos>. Até mesmo se a existência de um registro pai é ou não obrigatória dependendo do tipo da propriedade da chave estrangeira em questão.
 
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
public class Estado
{
    // Primary key
    public int EstadoID { get; set; }
    public string Sigla { get; set; }
    // Navigation property
    public virtual ICollection Cidades { get; set; }
}
public class Cidade
{
    // Primary Key
    public int CidadeID { get; set; }
    public string Nome { get; set; }
    // Foreign Key
    public int EstadoID { get; set; }
    // Navigation property
    public virtual Estado Estado { get; set; }
}

Conexão (Connection)

Após ter todas as classes de domínio já declaradas de forma a representar as entidades do seu banco de dados, definimos a classe de contexto do tipo DbContext afim de conectarmos esse domínio ao banco de dados e, então, iniciarmos a manipulação de informações persistentes. Para isso também existe uma regra de convenção que podemos usar. Basta criar sua classe de contexto com o mesmo nome da sua Connection String declarada no web.config da aplicação web.
 
Considerando a seguinte declaração de uma Connection String no web.config:
1
2
3
4
5
6
7
/code>configuration>
  /code>connectionStrings>
    /code>add name="BancoPrincipal"
         providerName="System.Data.SqlServer"
         connectionString="Server=.\SQLExpress;AttachDbFilename=MyDataFile.mdf;Database=dbname;"/>
  </connectionStrings>
</configuration>
 
Nossa declaração da classe de contexto, usando as devidas regras de convenção, fica:
 
1
2
3
4
public class BancoPrincipal : DbContext
{
    public DbSet<Usuario> Usuarios { get; set; }
}
Neste exemplo, o EF saberá que o contexto BancoPrincipal deverá se conectar ao banco de dados usando a ConnectionString de mesmo nome declarada no web.config.

Mais Convenções

Existem, claro, muito mais regras de convenções dentro do Entity Framework. Essas que eu citei são as que tive o primeiro contato quando comecei a trabalhar com EF.
Abaixo compartilho uma lista de demais convenções do EF para seu estudo.

 

Aprendam bem todas as regras que irão se aplicar ao código de vocês e ganhem velocidade no desenvolvimento.
 

Para saber mais

 
 

Exibições: 865

Comentar

Você precisa ser um membro de DevBrasil para adicionar comentários!

Entrar em DevBrasil

© 2017   Criado por Ramon Durães.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço