ASP.NETCore中为什么我的更新模型操作会导致重复?
创始人
2024-09-18 16:30:30
0

这个问题通常是由于 ASP.NET Core 的模型绑定器在执行更新操作时,只会更新模型对象中的已更改属性,而不会清除模型对象中未更改属性的内容所致。这可能会导致数据库存储在更新已更改属性和未更改属性的情况下出现冲突或重复。

解决这个问题的方法是在执行更新操作时使用 DbContext 中的 Update 方法,它会更新整个模型对象而不仅仅是更改的属性。这将确保所有属性都得到正确更新,从而避免出现重复的问题。

以下是一个使用 Update 方法来避免重复的示例:

// GET: /Products/Edit/5
public IActionResult Edit(int? id)
{
    if (id == null)
    {
        return NotFound();
    }

    var product = _context.Products.SingleOrDefault(m => m.ProductID == id);
    if (product == null)
    {
        return NotFound();
    }

    return View(product);
}

// POST: /Products/Edit/5
[HttpPost]
[ValidateAntiForgeryToken]
public async Task Edit(int id, [Bind("ProductID,ProductName,Price")] Product product)
{
    if (id != product.ProductID)
    {
        return NotFound();
    }

    if (ModelState.IsValid)
    {
        try
        {
            // Use the Update method to update the whole model object
            _context.Update(product);
            await _context.SaveChangesAsync();
        }
        catch (DbUpdateConcurrencyException)
        {
            if (!ProductExists(product.ProductID))
            {
                return NotFound();
            }
            else
            {
                throw;
            }
        }
        return RedirectToAction(nameof(Index));
    }
    return View(product);
}

在这个示例中,我们使用了 DbContext 的 Update 方法来更新整个 product 对象,这将确保模型对象中的所有属性都得到正确更新,从而避免已更改的属性和未更改的属性之间的差异导致的重复问题。

相关内容

热门资讯

一分钟了解!闽南漳州麻将插件(... 1、一分钟了解!闽南漳州麻将插件(辅助挂)果真真的有挂(果真有挂)-哔哩哔哩;该软件可以轻松地帮助玩...
总算明白!雀神广东麻雀赢(辅助... 总算明白!雀神广东麻雀赢(辅助挂)原来真的有挂(确实有挂)-哔哩哔哩;一、雀神广东麻雀赢有挂的是的,...
程序员教你!德州ai辅助app... 程序员教你!德州ai辅助app!的确真的有挂((2024已更新))(哔哩哔哩);精心打造了俱乐部社区...
4分钟了解!德扑之星刷数据(透... 1、4分钟了解!德扑之星刷数据(透视)软件透明挂((2023已更新))(哔哩哔哩);详细教程。2、德...
今日公布!博雅红河棋牌有没有技... 今日公布!博雅红河棋牌有没有技巧(辅助挂)竟然真的有挂(有挂秘笈)-哔哩哔哩;1分钟了解详细教程(微...
教学盘点!雀神互娱辅助器(辅助... 教学盘点!雀神互娱辅助器(辅助挂)确实真的有挂(发现有挂)-哔哩哔哩1、点击下载安装,微信小程序雀神...
透视了解!wepoke保险!竟... 透视了解!wepoke保险!竟然是真的有挂((2025已更新))(哔哩哔哩)关于wepoke的基本介...
三分钟实锤!微扑克俱乐部(透视... 三分钟实锤!微扑克俱乐部(透视)软件透明挂((2025已更新))(哔哩哔哩)1、起透看视 微扑克透明...
指导大家!蜀渝牌乐汇有挂没得(... 指导大家!蜀渝牌乐汇有挂没得(辅助挂)其实真的有挂(真实有挂)-哔哩哔哩是一款可以让一直输的玩家,快...
终于懂了!德州软件辅助!果真是... 终于懂了!德州软件辅助!果真是真的有挂((2022已更新))(哔哩哔哩)这是由厦门游乐互动科技有限公...