Error Generating Scaffold

2

I made the scaffolding generating the controller, and Index is experiencing an error in

  

(f = > f.Cargo)

with this error:

  

Can not convert lambda expression to type 'string' because it is not a   delegate

the class Employee Inherits people, and has as relationship Position, already the class Person has as relationship Type and PersonEndereco Below is the Controller

public ActionResult Index()
{
    var pessoas = (Funcionario)db.Pessoas.Include(f => f.PessoaEndereco).Include(f => f.Tipo).Include(f => f.Cargo);
    return View(pessoas.ToList());
}

Here are the classes:

public class Pessoa
{
    [Key]
    public int PessoaID { get; set; }

    [Required(ErrorMessage = "Preencha o nome")]
    [DisplayName("Nome")]
    [StringLength(150, MinimumLength = 2, ErrorMessage = "O nome deve ter no mínimo 2 e no máximo 150 caracteres.")]
    public string Nome { get; set; }

    [DisplayName("Telefone")]
    public string Telefone { get; set; }

    [DisplayName("Celular")]
    public string Celular { get; set; }

    [DisplayName("WhatsApp")]
    public string Whatsapp { get; set; }

    [DisplayName("Email")]
    [StringLength(150, ErrorMessage = "O E-mail deve ter no máximo 150 caracteres.")]
    public string Email { get; set; }

    [Required(ErrorMessage = "Preencha o CPF")]
    [DisplayName("CPF")]
    [StringLength(14, MinimumLength = 14, ErrorMessage = "O CPF deve 14 caracteres.")]
    public string CPF { get; set; }

    //relacionamentos
    public int TipoPessoaID { get; set; }
    public virtual TipoPessoa Tipo { get; set; }

    public int PessoaEnderecoID { get; set; }
    public virtual PessoaEndereco PessoaEndereco { get; set; }
}


public class TipoPessoa
{
    [Key]
    public int TipoPessoaID { get; set; }

    [DisplayName("Tipo: ")]
    [Required(ErrorMessage = "Informe o nome do tipo de usuário")]
    [Remote("VerificaTipo", "TipoPessoa", ErrorMessage = "Esse TIPO já existe no sistema")]
    //[RegularExpression(@"[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}", ErrorMessage = "Favor informe um e-mail válido")]
    public string Descricao { get; set; }

    //relacionamentos
    public virtual ICollection<Pessoa> Usuarios { get; set; }

}


public class PessoaEndereco
{
    [Key]
    public int PessoaEnderecoID { get; set; }

    //Relacionamentos
    public int PessoaID { get; set; }
    public virtual Pessoa Pessoa { get; set; }

    public int EnderecoID { get; set; }
    public virtual Endereco Endereco { get; set; }
}


public class Funcionario:Pessoa
{
    [Required(ErrorMessage = "Preencha o RG")]
    [DisplayName("RG")]
    public string RG { get; set; }

    [Required(ErrorMessage = "Preencha o numero da CTPS")]
    [DisplayName("CTPS")]
    public string CTPS { get; set; }

    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
    [Required(ErrorMessage = "Preencha data de nascimento")]
    [DisplayName("Data de Nascimento")]
    public DateTime DataNascimento { get; set; }

    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
    [Required(ErrorMessage = "Preencha a data de admissão")]
    [DisplayName("Data de Admissão")]
    public DateTime DataAdmissao { get; set; }

    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
    [DisplayName("Data de Demissão")]
    public DateTime DataDemissao { get; set; }

    [DisplayFormat(DataFormatString = "{0:c}")]
    [Required(ErrorMessage = "Preencha o Salário.")]
    [DisplayName("Salário")]
    public decimal Salario { get; set; }

    [DisplayName("Confirmar E-mail")]
    [Compare("Email", ErrorMessage = "E-mail e confirmação não são identicos.")]
    public string ConfirmaEmail { get; set; }

    [StringLength(25, MinimumLength = 5, ErrorMessage = "A senha deve ter no mínimo 5 e no máximo 25 caracteres.")]
    [Required(ErrorMessage = "Preencha a senha.")]
    [DisplayName("Senha")]
    public string Senha { get; set; }

    [DisplayName("Confirmar Senha")]
    [Compare("Senha", ErrorMessage = "Senha e confirmação não são identicos.")]
    public string ConfirmaSenha { get; set; }

    //Relacionamentos
    public int NiveAcessolID { get; set; }
    public virtual NivelAcesso NivelAcesso { get; set; }

    public int CargoID { get; set; }
    public virtual CargoFuncionario Cargo { get; set; }

    public virtual ICollection<Pedido> Pedidos { get; set; }
}
    
asked by anonymous 10.11.2016 / 23:27

2 answers

1

I solved my problem by including the .OfType < (

11.11.2016 / 00:35
1

You are forgetting to import the following libraries System.Linq and System.Data.Entity . Add the code below at the top of your class:

using System.Linq;
using System.Data.Entity;

Updated

Note that if you want, you can pass a string with the name of the property you want to give the include. For example:

public ActionResult Index()
{
    var pessoas = (Funcionario)db.Pessoas
                                 .Include("PessoaEndereco")
                                 .Include("Tipo")
                                 .Include("Cargo");

    return View(pessoas.ToList());
}

But I recommend giving the include's through lambdas expressions, as this makes it easy to map impact points when changing a particular entity.

    
11.11.2016 / 00:16