Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

HERANÇA COM ENTITY

Professor, boa tarde, antes de qualquer coisa, gostaria de agradecer pelo ótimo curso apresentado aqui no Alura, ele foi fundamental para que eu desse os primeiro passos com o Entity FrameWork. Valeu! A solução em que o Entity produz uma única tabela ficou ótima:

Classe de domínio

SOLUÇÃO 1
public class PessoaFisica : Usuario
    {
        public string CPF { get; set; }
    }
public class PessoaJuridica : Usuario
    {
        public string CNPJ { get; set; }
    }
public abstract class Usuario
      {
        public int ID { get; set; }
        public string Nome { get; set; }
        public string Senha { get; set; }
      }

CLASSE CONTEXTO:

public DbSet<ProdutoFisicas> PessoasFisicas { get; set; }
public DbSet<ProdutoJuridicas> PessoasJuridicas { get; set; }

Mas tive duas dúvidas: E se eu quisesse que fosse criado as tabelas: PessoasFisicas e PessoasJuridicas sem a tabela usuario?

SOLUÇÃO 2
PessoasFisicas [id, nome, senha, cpf]
PessoasJuridica [id, nome, senha, Cnpj]

Ou com três tabelas, PessoasFisicas, PessoasJuridicas e usuario?

SOLUÇÃO 3
Usuario[id, nome, senha]
PessoasFisicas [(idUsuario), cpf]
PessoasJuridica [(idUsuario), Cnpj]
Onde idUsuario é chave estrangeira e primária.
1 resposta

Oi Eduardo, não sou especialista em c#, mas tentei dar uma pesquisada já que rola uma similaridade com o Hibernate do Java.

Achei dois links que podem ser úteis:

https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/getting-started-with-ef-using-mvc/implementing-inheritance-with-the-entity-framework-in-an-asp-net-mvc-application

https://msdn.microsoft.com/en-us/library/jj618292(v=vs.113).aspx

O primeiro explica que é possível sim fazer os mapeamentos que você citou e o segundo mostra um pouco do processo. Espero que seja útil :).