Object attributes coming null in Query

1

Would anyone know to tell me why in my query, the attributes of the COR object, are coming null? I make that same query for Sizes, and it brings me the result waiting. but when doing the same query, for the class Color, it finds the objects, however it brings the information nulla.

ThequerytosearchtheProduct:

Produtoproduto=db.ProdutoDb.Find(id);

ASizesquery

vargeral=db.ProdutoDb.Where(x=>x.CodProduto==produto.CodProduto).Select(x=>x.Tamanho).ToList();

ThequeryColor:

varCores=db.ProdutoDb.Where(x=>x.CodProduto==produto.CodProduto).Select(x=>x.Cor).ToList();

TheColorclass:

publicclassCor{[Key]publicintCorId{get;set;}publicstringDescricao{get;set;}}

TheSizeclass:

publicclassTamanho{[Key]publicintId{get;set;}publicintDescricacao{get;set;}}

TheProductclass:

publicclassProduto{publicProduto(){this.Categoria=newHashSet<Categoria>().ToList();}#regionAtributos[Key]publicintProdutoId{get;set;}[Required(ErrorMessage="o nome deve ser preenchido")]
        public string NomeDoProduto { get; set; }
        [Required(ErrorMessage = "o codigo deve ser preenchido")]
        public string CodProduto { get; set; }
        [Required(ErrorMessage ="o preço deve ser preenchido")]
        public decimal PrecoDeAtacado { get; set; }
        [Required(ErrorMessage = "o preço deve ser preenchido")]
        public decimal PrecoDeVarejo { get; set; }
        [MaxLength(1200)]
        public string Informacoes { get; set; }
        [MaxLength(1200)]
        public string Decricao { get; set; }
        public bool? Disponibilidade { get; set; }
        public int Quatidade { get; set; }


        #endregion

        #region Chaves Estrangeiras
        public int CorId { get; set; }
        public virtual Cor Cor { get; set; }
        public int TamanhoId { get; set; }
        public virtual Tamanho Tamanho { get; set; }
        public int ImagemId { get; set; }
        public virtual Imagem Imagem { get; set; }
        public virtual IEnumerable<Comentario> Comentario { get; set; }
        public virtual List<Categoria> Categoria { get; set; }

        #endregion
    }

The interesting thing is that the colors are registered and appearing in the list normally, the query until I return result, however, with nullo attributes, ie Id and Description does not come.

    
asked by anonymous 09.11.2018 / 06:34

2 answers

1

If you're sure what color there is maybe it's something related to lazy loading, you can try to force that load using include , example:

var Cores = db.ProdutoDb
                                    .Where(x => x.CodProduto == produto.CodProduto)
                                    .Include(x=>x.Cor)
                                    .Select(x => x.Cor)
                                    .ToList();
    
09.11.2018 / 11:39
1

These objects are probably not loading because you did not use ICollection<T> to say that you want to do Lazy Loading.

Probably Tamanho should be null too.

Add the following lines to these classes and see if it works:

public class Cor
{
    [Key]
    public int CorId{ get; set; }
    public string Descricao { get; set; }

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

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

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

Another detail is that you did not use DataAnnotations to make explicit the relationship between Tamanho and Cor

[ForeignKey("CorId")]
public virtual Cor Cor { get; set; }
[ForeignKey("Id")]
public virtual Tamanho Tamanho { get; set; }
    
09.11.2018 / 11:26