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 :).