quando tento executar a consulta a baixo, tenho o seguinte erro
The ResultType of the specified expression is not compatible with the required type. The expression ResultType is 'Transient.reference[InsertHeranca.Pessoa]' but the required type is 'Transient.reference[InsertHeranca.PessoaJuridica]'.
Parameter name: arguments[1]
private static Cliente BuscarClientePorId(int id)
{
using (TesteContext context = new TesteContext())
{
return context.Cliente.Include("PessoaJuridica").FirstOrDefault(a => a.ClienteId == id);
}
}
meu mapeamento
public class TesteContext : DbContext
{
public DbSet<Pessoa> Pessoa { get; set; }
public DbSet<PessoaJuridica> PessoaJuridica { get; set; }
public DbSet<Empresa> Empresa { get; set; }
public DbSet<Cliente> Cliente { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
Database.SetInitializer(new DropCreateDatabaseAlways<TesteContext>());
base.OnModelCreating(modelBuilder);
}
}
[Table("Pessoa")]
public class Pessoa
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public virtual int PessoaId { get; set; }
[Required]
public string Nome { get; set; }
[ForeignKey("PessoaId")]
public virtual PessoaJuridica PessoaJuridica { get; set; }
}
[Table("PessoaJuridica")]
public class PessoaJuridica : Pessoa
{
public string Cnpj { get; set; }
}
[Table("Empresa")]
public class Empresa
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int EmpresaId { get; set; }
public string InscricaoEstadual { get; set; }
[ForeignKey("EmpresaId")]
public virtual PessoaJuridica PessoaJuridica { get; set; }
}
[Table("Cliente")]
public class Cliente
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int ClienteId { get; set; }
public string Email { get; set; }
[ForeignKey("ClienteId")]
public virtual PessoaJuridica PessoaJuridica { get; set; }
}
O que estou fazendo de errado?