我有一个具有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;
}
}