zoukankan      html  css  js  c++  java
  • LINQ to SQL Transaction(转)

    DLinq 对事务的支持非常灵活。缺省情况下,DataContext.SubmitChanges() 就会自动启动一个事务,确保所有操作在同一个事务下进行。
    public class DataContext : IDisposable
    {
        public virtual void SubmitChanges(ConflictMode failureMode)
        {
            // 省略部分代码...
            
            transaction = this.provider.Connection.BeginTransaction(IsolationLevel.ReadCommitted);
            this.provider.Transaction = transaction;
            
            new ChangeProcessor(this.services, this).SubmitChanges(failureMode);
            
            this.AcceptChanges();
            this.provider.ClearConnection();
            
            transaction.Commit();
            return;
    
            // 省略部分代码...
        }
    }

    我们还可以显示启用 DataContext 的事务。
    using (DataClasses1DataContext context = new DataClasses1DataContext(connStr))
    {
        context.Transaction = context.Connection.BeginTransaction();
        try
        {
            var user = new User { Name = "wangwu", Age = 14 };
            context.Users.Add(user);
            context.SubmitChanges();
    
            context.Transaction.Commit();
        }
        catch
        {
            context.Transaction.Rollback();
        }
    }

    同样,我们可以使用 System.Transactions.TransactionScope 创建跨 DataContext 的分布事务环境。
    using (TransactionScope scope = new TransactionScope())
    {
        try
        {
            using (DataClasses1DataContext context = new DataClasses1DataContext(connStr))
            {
                var user = new User { Name = "wangwu", Age = 14 };
                context.Users.Add(user);
                context.SubmitChanges();
            }
    
            using (DataClasses1DataContext context = new DataClasses1DataContext(connStr))
            {
                var user = new User { Name = "wangwu", Age = 14 };
                context.Users.Add(user);
                context.SubmitChanges();
            }
    
            scope.Complete();
        }
        catch
        {
        }
    }
  • 相关阅读:
    Centos-706防火墙端口操作
    Centos-7.6安装DotnetCore3.1
    Centos-610-源码安装GIT
    Centos-610-安装Jenkins2.222.4
    Centos610-安装NodeJs
    Windows:开发环境Word,PPT,EXCEL com+组件配置
    DCom配置我的电脑有个红色向下的箭头
    NPM包管理工具NRM
    Win10-Jvm调优之工具基本配置、使用(二)
    Win10-Jvm调优之工具基本配置、使用(一)
  • 原文地址:https://www.cnblogs.com/YSO1983/p/1825240.html
Copyright © 2011-2022 走看看