在 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();
 }