Я следил за примером проекта SportsStore в книге Apress Pro ASP.NET MVC 3 Framework и пытался применить концепции к моему приложению. Меня беспокоит одна область: в образце я могу добавить изображение в продукт, и оно будет сохранено в базе данных, но если я отредактирую какой-либо продукт, не загружая для него новое изображение, данные изображения будут удалены. , Я хочу иметь возможность редактировать продукт, но если данные изображения, возвращаемые из сообщения HTTP, являются нулевыми, я хочу, чтобы Entity Framework сохранил существующие данные изображения (и тип содержимого). Как я могу дать команду EF не обновлять это поле изображения с нулем, если новое изображение не загружено?
Вот код редактирования из образца SportsStore:
[HttpPost]
public ActionResult Edit(Product product, HttpPostedFileBase image)
{
if (ModelState.IsValid)
{
if(image != null)
{
product.ImageMimeType = image.ContentType;
product.ImageData = new byte[image.ContentLength];
image.InputStream.Read(product.ImageData, 0, image.ContentLength);
}
_repository.SaveProduct(product);
TempData["message"] = string.Format("{0} has been saved", product.Name);
return RedirectToAction("Index");
}
else
{
return View(product);
}
}
РЕДАКТИРОВАТЬ: Для Rondel - вот определение класса продукта
namespace SportsStore.Domain.Entities
{
public class Product
{
[HiddenInput(DisplayValue=false)]
public int ProductId { get; set; }
[Required(ErrorMessage = "Please enter a product name")]
public string Name { get; set; }
[Required(ErrorMessage = "Please enter a description")]
[DataType(DataType.MultilineText)]
public string Description { get; set; }
[Required]
[Range(0.01, double.MaxValue, ErrorMessage = "Please enter a positive price")]
public decimal Price { get; set; }
[Required(ErrorMessage = "Please specify a category")]
public string Category { get; set; }
public byte[] ImageData { get; set; }
[HiddenInput(DisplayValue = false)]
public string ImageMimeType { get; set; }
}
}
РЕДАКТИРОВАТЬ Как сделать так, чтобы EF сохранял только некоторые поля и оставлял другие в базе данных нетронутыми?