如何同步写入数据库?

时间:2018-01-06 07:08:47

标签: .net database

控制器的操作如何同步写入数据库?我尝试过RowVersion,但它忽略了例外写作。

更新

假设我有一个博客帖子。当访问者访问帖子时,我想增加帖子的视图统计信息。

我尝试使用RowVersion来处理并发访问。

public async Task<IActionResult> View(string postTitleSlug)
{
    var post = await _db.Posts
        .Where(p => p.TitleSlug.Equals(postTitleSlug)
        .FirstOrDefaultAsync();

    var saveFailed = true;
    while (saveFailed)
    {
        try
        {
            saveFailed = false;

            post.ViewCount += 1;
            await _db.SaveChangesAsync();
        }
        catch (DbUpdateConcurrencyException e)
        {
            saveFailed = true;

            e.Entries.Single().Reload();
        }
    }

    return Ok();
}

但我无法处理它的行为。如果涉及两个或更多表,则while循环过多。

因为没有必要立即更新这些统计数据,所以我正在考虑像rabbitmq,resque这样的任务队列......但是对于我的简单博客帖子来说它是否过度了?

0 个答案:

没有答案