首页
学习
活动
专区
圈层
工具
发布

EF6事务
EN

Stack Overflow用户
提问于 2015-11-18 02:04:31
回答 1查看 36关注 0票数 0

我有一个场景,其中我有一个运行的总用户存款。我正在尝试实现并发机制,以确保不会发生两个并发操作。

我可以使用乐观并发,但它似乎不能在我的情况下完成工作。

在我的例子中,一个新的存款事务将依赖于前一个事务,所以我将在数据库中有一个读和一个写。

据我所知,我应该做这样的事情

代码语言:javascript
复制
     public DepositTransaction DepositAdd(int userId, decimal ammount)
    {
        using (var cx = this.Database.GetDbContext())
        {
            using (var trx = cx.Database.BeginTransaction(System.Data.IsolationLevel.RepeatableRead))
            {
                try
                {
                    //here the last deposit ammount is read and new created with same context
                    var transaction = this.DepositTransaction(userId, ammount, SharedLib.BalanceTransactionType.Deposit, cx);
                    trx.Commit();
                    return transaction;
                }
                catch
                {
                    trx.Rollback();
                    throw;
                }
            }                    
        }
    }

我产生了调用函数的多个线程,但它们似乎无法获得前一个调用提交的最后一个数据,函数也没有阻塞并等待前一个线程完成。

EN

回答 1

Stack Overflow用户

发布于 2015-11-23 16:38:14

在深入研究SQL server的文档之后,我发现实现这一目标的正确隔离级别是可序列化的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33763958

复制
相关文章

相似问题

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