Array
(
)

Lookup de classe

Flavio Barbosa
|
MVP
Pontos: 200
    23 jul 2013

Boa noite,
Tenho uma duvida bem básica.
Contando que eu tenha duas classes Profissao e Cliente sendo que CODPROFISSAO em Cliente é uma FK conforme descrito abaixo, pergunto: Como faço para ter o DSCPROFISSAO no meu objeto Cliente quando eu fizer:

Cliente cli = new Cliente();
cli = context.Cliente.Where(c=>c.codcliente == 1).tofirstordefault();
No objeto cli eu preciso ter o nome da descrição da profissao do cliente. No Delphi é moleza fazer isto, mas aqui, to apanhando igual cachorro sem dono.
Já tentei no Link, com lambda, sem lambda, já estudei sobre tipos anonymus mas parece mais V de Vingança do que OO.
Creio que a forma mais simples seria esta mas não consigo usar o get; set; da forma correta porque get;set; é tudo o que sei fazer.
Alguém pode me auxiliar?
public class Profissao
{
[Key, Column(Order = 0), DatabaseGenerated(DatabaseGeneratedOption.None)]
public int CodEmpresa { get; set; }
[ForeignKey("CodEmpresa")]
public virtual Empresa Empresa { get; set; }
[Key, Column(Order = 1), DatabaseGenerated(DatabaseGeneratedOption.None)]
public int CodProfissao { get; set; }
[ForeignKey("CodProfissao")]
public virtual Param_Profissao Param_Profissao { get; set; }
[Required(ErrorMessage = "O campo Descrição é obrigatório", AllowEmptyStrings = false)]
[StringLength(30, MinimumLength = 4, ErrorMessage = "A Descrição deve estar entre 4 e 30 caracteres.")]
public string DscProfissao { get; set; }
public bool IdtAtivo { get; set; }
public virtual ICollection<Cliente> Clientes { get; set; }
public Profissao()
{
if (IdtAtivo == null)
IdtAtivo = true ;
}
}

/// Classe Cliente
public class Cliente
{
[Key, Column(Order = 0), DatabaseGenerated(DatabaseGeneratedOption.None)]
public int CodEmpresa { get; set; }
[ForeignKey("CodEmpresa")]
public virtual Empresa Empresa { get; set; }

[Key, Column(Order=1)]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int CodCliente { get; set; }
public int? CodProfissao { get; set; }
[ForeignKey("CodEmpresa, CodProfissao")]
public virtual Profissao Profissao { get; set; }
public string DscProfissao { get { return Profissao.DscProfissao; } } // Isto não funciona
[Required(ErrorMessage = "O campo Razão Social é obrigatório", AllowEmptyStrings = false)]
[MaxLength(100, ErrorMessage = "Tamanho máximo para o campo Razão Social é de 100 caracteres.")]
public string DscRazaoSocial { get; set; }
}
public Cliente()
{
if (Profissao == null)
Profissao = new Profissao();
}