У меня проблемы с пониманием EntityState.Modified, когда дело доходит до обновления объекта с помощью .NET MVC3.
У меня есть модель, которая хранит ImageFilePath и ImageContentType при загрузке изображения.Вот как выглядит действие создания.
[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();
}
}
Проблема возникает при попытке отредактировать и впоследствии обновить этот объект.Это моё действие редактирования.
[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();
}
}
Я считаю, что проблема связана с тем, что я устанавливаю EntityState.Modified, который помечает все свойства как измененные.Если я не загружаю новое изображение, ImageFilePath и ImageContentType, поступающие из внешнего интерфейса, фактически равны нулю, что и хранится.
Мой вопрос, как мне решить эту проблему?Как правильно использовать EntityState.Modified?