在 ASP.NET MVC 中更新数据库时数据丢失
Data being lost when updating database in ASP.NET MVC
我有一个模型有 2 个值 (+ PK) -
public int Id { get; set; }
public string ImageDescription { get; set; }
public byte[] Image { get; set; }
但是当用户更新 ImageDescription 字段时,图像将从数据库中删除。
我正在使用自动生成的控制器进行编辑。
public async Task<IActionResult> Edit(int id, [Bind("Id,ImageDescription")] Gallery gallery)
{
if (id != gallery.Id)
{
return NotFound();
}
if (ModelState.IsValid)
{
try
{
_context.Update(gallery);
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!GalleryExists(gallery.Id))
{
return NotFound();
}
else
{
throw;
}
}
return RedirectToAction(nameof(Index));
}
return View(gallery);
}
Bind里面没有Image,只有ImageDescription,所以保存不了
public async Task<IActionResult> Edit(int id, [Bind("Id,ImageDescription")] Gallery gallery)
如果您不想保存新图片而想保留之前的图片,您可以使用此代码
var existedGallery=_context.Set<Gallery>().FirstOrDefault(i=> i.Id==gallery.Id);
if(existedGallery!=null)
{
existedGallery.ImageDescription=gallery.ImageDescription;
_context.Entry(existedGallery).Property(i => i.ImageDescription).IsModified = true;
var result = await _context.SaveChangesAsync();
}
我有一个模型有 2 个值 (+ PK) -
public int Id { get; set; }
public string ImageDescription { get; set; }
public byte[] Image { get; set; }
但是当用户更新 ImageDescription 字段时,图像将从数据库中删除。 我正在使用自动生成的控制器进行编辑。
public async Task<IActionResult> Edit(int id, [Bind("Id,ImageDescription")] Gallery gallery)
{
if (id != gallery.Id)
{
return NotFound();
}
if (ModelState.IsValid)
{
try
{
_context.Update(gallery);
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!GalleryExists(gallery.Id))
{
return NotFound();
}
else
{
throw;
}
}
return RedirectToAction(nameof(Index));
}
return View(gallery);
}
Bind里面没有Image,只有ImageDescription,所以保存不了
public async Task<IActionResult> Edit(int id, [Bind("Id,ImageDescription")] Gallery gallery)
如果您不想保存新图片而想保留之前的图片,您可以使用此代码
var existedGallery=_context.Set<Gallery>().FirstOrDefault(i=> i.Id==gallery.Id);
if(existedGallery!=null)
{
existedGallery.ImageDescription=gallery.ImageDescription;
_context.Entry(existedGallery).Property(i => i.ImageDescription).IsModified = true;
var result = await _context.SaveChangesAsync();
}