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

C# “错误”;数据库操作预期影响1行,但实际影响0行。数据可能已被修改或删除。”;,c#,asp.net-core,asp.net-web-api,entity-framework-6,C#,Asp.net Core,Asp.net Web Api,Entity Framework 6,我有一个模型,它有100多个属性和一个主键(标识),我使用它通过Http Post with body使用EF6插入或更新数据库 我总是出错 数据库操作预期影响1行,但实际影响0行。自加载实体后,数据可能已被修改或删除 无论何时,从控制器传递到要更新的模型的值与数据库中的值不同,但如果每列中的数据与模型中的数据相同,则使用下面的命令可以完美地保存,而不会出现问题 由于模型属性很多,我不想在调用SaveChanges()方法之前手动为每个属性赋值,即使这样做是可行的 这是我的控制器 [HttpPu

我有一个模型,它有100多个属性和一个主键(标识),我使用它通过Http Post with body使用EF6插入或更新数据库

我总是出错

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

无论何时,从控制器传递到要更新的模型的值与数据库中的值不同,但如果每列中的数据与模型中的数据相同,则使用下面的命令可以完美地保存,而不会出现问题

由于模型属性很多,我不想在调用
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());
        }
    }
[HttpPut(“{autoid:int}”)]
公共异步任务更新存储(int autoid,[FromBodyOrDefault]存储)
{
尝试
{
if(autoid!=store.autoid)
{
AddModelError(“ID”,“自动ID不匹配”);
返回请求(ModelState);
}
var response=wait Store.StoreExists(Store.AutoId);
如果(响应!=true)
{
AddModelError(“AutoId”,未找到记录ID为{AutoId}的$”存储);
返回NotFound(ModelState);
}
等待存储。更新存储(存储);
退货店;
}
捕获(例外情况除外)
{
返回状态码(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;
        }
}
公共异步任务更新存储(存储信息)
{
尝试
{
_context.Entry(storeinfo).State=EntityState.Modified;
return wait_context.saveChangesSync();
}
捕获(DbUpdateConcurrencyException ex)
{
返回1;
}
}

如何调用
UpdateStore
方法?如何从控制器设置模型的属性值?我在更改表的主键时遇到了这个问题,但没有在代码中更新表的映射。如何调用
UpdateStore
方法?如何从控制器设置模型的属性值?当我更改表上的主键但没有在代码中更新表的映射时,我遇到了这个问题。