Tengo problemas para entender EntityState.Modified cuando se trata de actualizar un objeto con .NET MVC3.MVC3 con EF 4.1 y EntityState. Modificado en la actualización
Tengo un modelo que almacena un ImageFilePath y ImageContentType cuando se carga una imagen. Aquí es cómo se ve la acción de crear.
[HttpPost]
public ActionResult Create(SneakPeekCollection collection, HttpPostedFileBase image)
{
try
{
if (image != null)
{
var filepath = Path.Combine(HttpContext.Server.MapPath("../../Uploads"), Path.GetFileName(image.FileName));
image.SaveAs(filepath);
collection.ImageContentType = image.ContentType;
collection.ImageFilePath = "~/Uploads/" + image.FileName;
}
_db.SneakPeekCollections.Add(collection);
_db.SaveChanges();
return RedirectToAction("Index");
}
catch
{
return View();
}
}
El problema se produce al intentar editar y posteriormente actualizar este objeto. Esta es mi acción Editar.
[HttpPost]
public ActionResult Edit(int id, SneakPeekCollection collection, HttpPostedFileBase image)
{
try
{
if (image != null)
{
var filepath = Path.Combine(HttpContext.Server.MapPath("../../../Uploads"), Path.GetFileName(image.FileName));
image.SaveAs(filepath);
collection.ImageContentType = image.ContentType;
collection.ImageFilePath = "~/Uploads/" + image.FileName;
}
_db.Entry(collection).State = EntityState.Modified;
_db.SaveChanges();
return RedirectToAction("Index");
}
catch
{
return View();
}
}
creo que el problema viene del hecho de que estoy estableciendo EntityState.Modified que marca todas las propiedades en su forma modificada. Si no carga una nueva imagen, ImageFilePath y ImageContentType procedentes del front-end son efectivamente nulas, que es lo que se está almacenando.
Mi pregunta es ¿cómo puedo resolver esto? ¿Cuál es la forma correcta de usar EntityState.Modified?
se resuelve su problema? ¿Qué solución usaste? Por favor dime. –