Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Linked

[Resolvido] Associação vários para 1 c# (razor + asp.net mvc 3)

Recommended Posts

Olá Pessoal

 

Tenho uma classe denominada de DadosPessoaJuridica, que tem uma associação de vários(*) para um(1) com a classe de Pessoa, veja:

 

   public class DadosPessoaJuridica
   {

       [Key]
       public int Id { get; set; }

       public string CNPJ { get; set; }

       public int? PessoaId { get; set; }
       public virtual Pessoa Pessoa { get; set; }
   }


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

       [Required(ErrorMessage = "(Requerido)")]
       [DisplayName("Nome")]
       public string Nome { get; set; }

       public virtual DadosPessoaJuridica DadosPessoaJuridica { get; set; }
   }

 

O problema é que o .NET não está aceitando essa associação. O seguinte erro é emitido:

 

Unable to determine the principal end of an association between the types 'Sys.Models.PessoaJuridica' and 'Sys.Models.Pessoa'. The principal end of this association must be explicitly configured using either the relationship fluent API or data annotations.

 

Se algum colega puder me ajudar, ficarei muito grato.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara na pessoa tem ser:

public virtual ICollection<DadosPessoaJuridica> DadosPessoaJuridica { get; set; }

Pois dentro da pessoa existirá uma lista de PessoJuridica.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara na pessoa tem ser:

public virtual ICollection<DadosPessoaJuridica> DadosPessoaJuridica { get; set; }

Pois dentro da pessoa existirá uma lista de PessoJuridica.

 

Bom dia Ivan, muito obrigado por responder ao meu post.

 

Por gentileza, estou tentando ler essa ICollection no meu método no Controller, mas está dando erro NULLPOINTEREXCEPTION, ou seja, na minha entidade DadosPessoaJuridica pode ou não haver dados, não é obrigatório, talvez seja isso.

 

Veja:

 var data = _db.Pessoas.OrderBy(a => a.Nome).ToList();
 var registros = data.Select(x => new
 {
               x.Id,
               x.Nome,
               x.DadosPessoaJuridica.CNPJ
           });

 

Então, como faço para contornar esse problema lendo essa ICollection?

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Moço esse objeto x.DadosPessoaJuridica é uma lista, você não vai conseguir trazer CNPJ pois é uma lista.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ivan boa tarde,

 

Percebi que você é moderador. Desculpe a minha igorância no assunto, é que sou iniciante em .NET, por isso eu te perguntei sobre como ler essa ICollection, ainda estou em fase de aprendizado.

 

De qualquer forma quer lhe agradecer por responder a minha questão.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tranquilo cara, estamos aqui pra ajudar e ser ajudado na medida do possível do conhecimento de cada um.

Da forma que você esta fazendo você esta usando POCO.

Da uma lida em http://msdn.microsoft.com/pt-br/library/ff978717.aspx

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.