使用开放式并发更新数据库总是会失败。检查事件探查器(SQL server)生成的语句似乎总是检查NULL
WHERE [ID] = @p10 AND [ROWVERSION] IS NULL;而ROWVERSION类似于0x000000000000B490。可能出了什么问题?谢谢你的帮助!
发布于 2019-08-01 21:33:41
哦,它碰巧是一个更新过的新对象,所以ROWVERSION是NULL。类似于:
public async Task<IActionResult> Edit(int id, [Bind("stuff")] MyObject obj)
{
if (id != obj.Id)
{
return NotFound();
}
if (ModelState.IsValid)
{
try
{
_context.Update(obj);
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException ex)
...因此,最好在更新之前分配正确的ROWVERSION
public async Task<IActionResult> Edit(int id, byte[] rowVersion, [Bind("stuff")] MyObject obj)
...
_context.Entry(myObj).Property("Rowversion").OriginalValue = rowVersion;
_context.Update(obj);
...https://stackoverflow.com/questions/57306487
复制相似问题