Mam problemy ze zrozumieniem EntityState.Modified, jeśli chodzi o aktualizowanie obiektu .NET MVC3.MVC3 z EF 4.1 i EntityState.Modified on update
Mam model, który przechowuje ImageFilePath i ImageContentType podczas przesyłania obrazu. Oto jak wygląda akcja tworzenia.
[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();
}
}
Problem pojawia się podczas próby edycji, a następnie aktualizacji tego obiektu. To jest moja akcja edycji.
[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();
}
}
Wierzę, że problem wynika z faktu, że ustawiam EntityState.Modified, który oznacza wszystkie właściwości jako zmodyfikowane. Jeśli nie prześlesz nowego obrazu, ImageFilePath i ImageContentType pochodzące z frontonu są efektywnie puste, co właśnie się gromadzi.
Moje pytanie brzmi: jak rozwiązać ten problem? Jaki jest właściwy sposób korzystania z EntityState.Modified?
Czy Twój problem został rozwiązany? Z jakiego rozwiązania korzystałeś? Powiedz mi, Proszę. –