Entity Framework Asp.net mvc data comparison

Asked

Viewed 215 times

0

I need to receive the value and quantity in stock of a particular product according to your Id.By debug the product id is arriving correctly, but when I am going to assign the values to the table fields I have error in converting.

        // POST: Pedidos/Create
    [HttpPost]
    public ActionResult Create(Pedido model)
    {
         //pego a quantidade do produto de acordo com id
        var qtdEstoque = db.Estoque.Where(p => p.ProdutoId == model.ProdutoId).Select(p => p.Quantidade);
        //pego preço de acordo com id
        var precoUnitario = db.Produto.Where(p => p.Id == model.ProdutoId).Select(p => p.Preco);

        model.PrecoUnidade = Convert.ToDecimal( precoUnitario);
        model.Quantidade = Convert.ToInt32(qtdEstoque);

        if (ModelState.IsValid)
        {
            db.Pedido.Add(model);

            db.SaveChanges();
        }


        ViewBag.ClienteId = new SelectList(db.Cliente.ToList(), "Id", "Nome");
        ViewBag.ProdutoId = new SelectList(db.Produto.ToList(), "Id", "Nome");

        return View(model);

    }

    [Table("Pedido")]
public class Pedido
{
    public int Id { get; set; }

    public int ClienteId { get; set; }

    public int ProdutoId { get; set; }

    public int Quantidade { get; set; }

    public decimal PrecoUnidade { get; set; }

    [ForeignKey("ProdutoId")]
    public virtual Produto Produto { get; set; }

    [ForeignKey("ClienteId")]
    public virtual Cliente Cliente { get; set; }

}
  • What is the error message?

  • System.Invalidcastexception: 'It is not possible to convert an object of type 'System.Data.Entity.Infrastructure.Dbquery`1[System.Decimal]' into type 'System.Iconvertible'.'

  • Tried to use Double?

  • It doesn’t even let because the field in the table is like decimal, if I type in the hand works, but if I try to already get the value of the product in the bank will not =/

1 answer

0

Stayed like this:

            Estoque estoque = db.Estoque.Where(x => x.ProdutoId == model.ProdutoId).FirstOrDefault();
        int qtdEstoque = estoque.Quantidade;

        Produto produto = db.Produto.Where(x => x.Id == model.ProdutoId).FirstOrDefault();
        decimal precoUnitario = produto.Preco;

        model.Quantidade = qtdEstoque;
        model.PrecoUnidade = precoUnitario;

Browser other questions tagged

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