首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >乐观并发:始终检查RowVersion为NULL

乐观并发:始终检查RowVersion为NULL
EN

Stack Overflow用户
提问于 2019-08-01 17:59:48
回答 1查看 104关注 0票数 0

使用开放式并发更新数据库总是会失败。检查事件探查器(SQL server)生成的语句似乎总是检查NULL

代码语言:javascript
复制
WHERE [ID] = @p10 AND [ROWVERSION] IS NULL;

而ROWVERSION类似于0x000000000000B490。可能出了什么问题?谢谢你的帮助!

EN

回答 1

Stack Overflow用户

发布于 2019-08-01 21:33:41

哦,它碰巧是一个更新过的新对象,所以ROWVERSION是NULL。类似于:

代码语言:javascript
复制
    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

代码语言:javascript
复制
    public async Task<IActionResult> Edit(int id, byte[] rowVersion, [Bind("stuff")] MyObject obj)
    ...
    _context.Entry(myObj).Property("Rowversion").OriginalValue = rowVersion;
    _context.Update(obj);
    ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57306487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档