none
Query Linq Include Error RRS feed

  • Pergunta

  • 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?

    quinta-feira, 9 de maio de 2013 20:29

Todas as Respostas

  • Tente utilizar:

     return context.Cliente.Include("PessoaJuridica").Where(a => a.ClienteId == id).FirstOrDefault();


    Ao infinito e além!

    sexta-feira, 10 de maio de 2013 15:03
  • não resolveu, tenho o mesmo problema ainda, isso pelo que pude ver só acontece na versão 4.0 do framework, onde tenho a 4.5 não acontece, mas como tenho lugares onde preciso rodar o sistema em windows xp, e o framework 4.5 não é suportado, preciso continuar usando somente o framework 4.0
    sábado, 11 de maio de 2013 14:20