错误“数据库操作预期会影响1行,但实际上影响0行。数据可能已被修改或删除。”

时间:2020-07-23 19:37:45

标签: c# asp.net-core asp.net-web-api entity-framework-6

我有一个具有100多个属性的模型,该模型具有一个主键(身份),我可以使用它通过带有主体的Http Post通过EF6插入或更新数据库。

我总是会出错

数据库操作预期会影响1行,但实际上会影响0行。自加载实体以来,数据可能已被修改或删除

无论何时值从控制器传递到要更新的模型时,其值都与数据库中的值不同,但是,如果每列中的数据与模型中的数据相同,则使用下面的方法可以完美地保存下来,没有问题。 / p>

而且由于模型属性很多,所以我不希望在调用SaveChanges()方法之前为每个属性手动分配值,即使这样做行之有效

这是我的控制器

[HttpPut("{autoid:int}")]
    public async Task<ActionResult<Store>> UpdateStore(int autoid, [FromBodyOrDefault]  Store store)
    {
        try
        {
            if (autoid != store.AutoId)
            {
                ModelState.AddModelError("ID", "Auto ID mismatch");
                return BadRequest(ModelState);
            }

            var response = await Store.StoreExists(store.AutoId);
            if (response != true)
            {
                ModelState.AddModelError("AutoId", $"Store with recordid:{autoid} not found");
                return NotFound(ModelState);
            }
                await Store.UpdateStore(store);
                return store;
            }
        catch (Exception ex)
        {
            return StatusCode(StatusCodes.Status500InternalServerError, ex.InnerException.ToString());
        }
    }

这是UpdateStore方法

public async Task<int> UpdateStore(Store storeinfo)
{
        try
        {
            _context.Entry(storeinfo).State = EntityState.Modified;
            return await _context.SaveChangesAsync();
        }
        catch (DbUpdateConcurrencyException ex)
        {
            return 1;
        }
}

0 个答案:

没有答案