none
Edição apaga registro desnecessariamente EF Code First RRS feed

  • Pergunta

  • Boa tarde a todos novamente.

    Estou com uma outra situação, na hora de editar um registro. Tenho um formulário que faz upload de uns arquivos, e até ai tudo bem. Ele cria os registros perfeitamente. Porém, na hora de editar, suponhamos que eu não queira editar a foto, não quero precisar ter de subir ela novamente só por que alterei o descritivo, e deixe o campo em branco. Então o sistema esta entendendo que tem de apagar o registro e deixa o campo vazio, quando na verdade ele não precisa mecher o mesmo. Estou tentando utilizar o EntityState.Unchanged() mas não estou conseguindo. Podem me ajudar?

            [HttpPost]
            [ValidateInput(false)]
            public ActionResult Edit(Produto produto, string id, HttpPostedFileBase Foto)
            {
                if (ModelState.IsValid)
                {
                    if (Foto != null)
                    {
                        if (Foto.ContentLength > 0)
                        {
                            string savedFileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "content/produtos_images");
                            savedFileName = Path.Combine(savedFileName, Path.GetFileName(Foto.FileName));
                            produto.Foto = Path.GetFileName(Foto.FileName);
                            Foto.SaveAs(savedFileName);
                        }
                    }
    
                    if (produto.Foto != null)
                    {
                        db.Entry(produto.Foto).State = EntityState.Unchanged;
                        db.SaveChanges();
                        return RedirectToAction("Index");
                    }
                    else
                    {
                        db.Entry(produto).State = EntityState.Modified;
                        db.SaveChanges();
                        return RedirectToAction("Index");
                    }
                }
    
                ViewBag.ProdutoCategoriaId = new SelectList(db.Categorias, "Id", "Nome", produto.ProdutoCategoriaId);
                return View(produto);
            }


    Não importa ao tempo o minuto que passa, mas o minuto que vem.

    segunda-feira, 20 de agosto de 2012 18:43

Todas as Respostas