您当前的位置: 首页 > 

暂无认证

  • 0浏览

    0关注

    100385博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

[EF]共享事务处理连接

发布时间:2019-06-14 13:58:42 ,浏览量:0

不同的context对象可以通过共享连接将数据的更新操作合并在相同的事务处理范围中,参考以下的设置:

KTStoreContext context_s = new KTStoreContext(context.Database.Connection
                            , contextOwnsConnection: false);

为了共享事务处理,因此调用另外一个版本的构造函数创建所需的context对象:除此之外,还要指定使用此连接的事务处理环境。

context_s.Database.UseTransaction(transaction.UnderlyingTransaction);

完成以上的设置。context与context_s就会同时被限制在一个事务处理范围中。

using (var transaction = context.Database.BeginTransaction())
                {
                    try
                    {
                        var products = context.Products;
                        foreach (Product product in products)
                        {
                            int p = (int)(product.Price * 0.5);
                            product.SPrice = p;
                        }
                        int c = context.SaveChanges();

                        KTStoreContext context_s = new KTStoreContext(context.Database.Connection
                            , contextOwnsConnection: false);
                        context_s.Database.UseTransaction(transaction.UnderlyingTransaction);
                        context_s.Database.ExecuteSqlCommand("UPDATE Product SET SPrice =0 WHERE Id=10 ");
                     
                        transaction.Commit();
                        Console.WriteLine("更新了 {0} 项数据", c);
                    }
                    catch (Exception ex)
                    {
                        transaction.Rollback();
                        Console.WriteLine("事务处理失败");
                    }
                }
关注
打赏
1655516835
查看更多评论
立即登录/注册

微信扫码登录

0.1616s