none
Alterar somente algumas propriedades do model RRS feed

  • Pergunta

  • Tenho a classe locação que possui algumas propriedades.. uma delas é uma classe do tipo Veiculo.

    Tenho uma view de cadastro de locação.. o usuário digita algumas informações de locação e tambem as informações do veiculo.. na hora de gravar verifico se o veiculo já existe e então atualizo ele, caso contrário insiro no banco.

    O problema é que a view não tem todas as propriedades do veiculo como por exemplo o Id do dono.. portanto quando atualizo, o id do dono sempre torna-se null no banco.

    Como faço para isto não acontecer?

    Estou fazendo da forma abaixo mas ocorre erro:

            [HttpPost]
            public ActionResult Create([Bind(Exclude = "Id")]Locacao locacao) 
            {
                if (ModelState.IsValid) 
                {
                    db.Locacao.Add(locacao);
    
                    var veiculo_in_database = db.Veiculo.First(v => v.Placa == locacao.Veiculo.Placa);
                    if (veiculo_in_database != null)
                    {
                        veiculo_in_database.Marca = "testeee";
    
                        locacao.Veiculo.Marca = veiculo_in_database.Marca; // quero atualizar somente esse
                        locacao.Veiculo.ClienteId = veiculo_in_database.ClienteId; // e essa
    
                        db.Entry(locacao.Veiculo).CurrentValues.SetValues(veiculo_in_database);
                        db.Entry(locacao.Veiculo).State = EntityState.Modified;
                    }
    
                    db.SaveChanges();   
                     
                    return RedirectToAction("Index"); 
                }
    
                ViewBag.Tipo = new SelectList(db.Tipo.ToList(), "Id", "Descricao");
                
                return View(locacao);
            }


    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    quarta-feira, 11 de abril de 2012 18:38

Respostas

Todas as Respostas