Nullable Object must have a value

Asked

Viewed 2,188 times

1

I have this SELECT, where m.EmpresaID may come null:

var pesquisa = from pro in db.Produtos
    join prodempresa in db.ProdutosEmpresas on pro.Id equals prodempresa.ProdutoID 
    into Details from m in Details.DefaultIfEmpty()
              select new
              {
                   Codigo = pro.Codigo,
                   nome = pro.nome,
                   EmpresaID = m.EmpresaID.Value,
                   TipoProduto = pro.TipoProduto,
                   Qtd = m.Qtd
              };

But when will I add in list, even though he was declared

public int? EmpresaID { get; set; }

it returns this error.

Invalidoperationexception: Nullable Object must have a value.

foreach (var item in pesquisa)
{
    Estoque produto = new Estoque();

    produto.Codigo = item.Codigo;
    produto.nome = item.nome;
    produto.EmpresaID = item.EmpresaID;
    produto.TipoProduto = item.TipoProduto;
    produto.Qtd = item.Qtd;
    prod.Add(produto);
}

I tried to compare the value, send EmpresaID = m.EmpresaID.GetValueOrDefault(), but the same error occurs.

  • Ever tried to assign some value to EmpresaID, even if it is null?

  • @Felipeavelar already yes. And the same error occurred

  • If you take that line it works EmpresaID = m.EmpresaID.Value,? perhaps the m is already coming NULL?

1 answer

2


Set a default value for your EmpresaID

Example:

  • int EmpresaID ?? 0

  • Guid EmpresaID ?? Guid.Empty


var pesquisa = from pro in db.Produtos
    join prodempresa in db.ProdutosEmpresas on pro.Id equals prodempresa.ProdutoID 
    into Details from m in Details.DefaultIfEmpty()
        select new
        {
            Codigo = pro.Codigo,
            nome = pro.nome,
            EmpresaID = m.EmpresaID ?? 0,
            TipoProduto = pro.TipoProduto,
            Qtd = m.Qtd
        };
  • 1

    It worked. Thank you.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.