1
resposta

Mapeamento EF

Senhores,

no curso vemos que o mapeamento realizado é diretamente nas entidades.

Lendo na internet vi que há várias maneiras de realizar o mapeamento de entidades no EF, me deixando um quanto tanto confuso.

Gostaria de saber , qual a melhor ou qual a maneira correta de se fazer mapeamento de entidades no EF e seus relacionamentos, utilizando o mapeamento que vi como exemplo abaixo ou o que é explicado no curso??

Exemplo: o exemplo segue o mapeamento/relacionamento 1-n entre Cliente e Conexão, onde uma conexã tem vários clientes e 1 cliente pode ter apenas uma conexão.

{
public class MapClienteConexao : EntityTypeConfiguration<Cliente>
    {
        public MapClienteConexao()
        {
            HasKey(x => x.ID);
        }
    }
}

{
    public class MapConexaoEClientes : EntityTypeConfiguration<Conexao>
    {
        public MapConexaoEClientes()
        {
            HasKey(x => x.ID);

            HasMany(x => x.Cliente);
            HasRequired(x => x.Cliente);
        }//Validar com Japa
    }
}

E aqui estão as duas entidades:

{
    public class Cliente
    {
        public int ID { get; set; }

        [Required, StringLength(50)]
        public string Nome { get; set; }

        [EmailAddress]
        public string Email { get; set; }

        public string Telefone { get; set; }

        public int ConexaoID { get; set; }

        public virtual Conexao Conexao { get; set; }

    }
}

{
    public class Conexao
    {
        public int ID { get; set; }

        public string Endereco { get; set; }

        public string Usuario { get; set; }

        public string Senha { get; set; }

        public string Porta { get; set; }

        public virtual IList<TipoDeConexao> TipoConexao { get; set; }

        public virtual IList<Cliente> Cliente { get; set; }
    }
}

Mais uma vez, obrigado.

1 resposta

Olá Vinícius,

na verdade não existe uma maneira certa ou errada, depende da sua situação. As migrations usadas neste curso garantem que o seu banco de dados evolui junto com os seus modelos, dado que ele gera querys que vão atualizar o seu banco para qualquer mudança feita nas classes. Então em projetos que o código back-end vai ditar também como que o banco será criado, faz mais sentido usar as migrations.

Já este código que você encontrou na internet de usar o EntityTypeConfiguration é mais usado quando você já tem um banco legado com tabelas antigas criadas e precisa que o Entity Framework faça o mapeamento destas tabelas com os modelos/classes que você está criando no seu projeto. Então, por exemplo, no seu banco já tem uma tabela chamada de dbUserClient, só que no código c# você tem as classe Cliente. Ai você faz o esta classe MapCliente você diz que quer que o Entity mapeie a classe Cliente com a tabela dbUserCliente. Ai segue a mesma ideia para a Conexao e o relacionamento entre estas duas classes.