我想更新上面两个LinqDataContext中的几张表,如果有一条SQL出错,都将回滚。怎么做啊?

解决方案 »

  1.   

    是不是这样就OK?
    using (TransactionScope ts = new TransactionScope())
                    {                    LinqDbCollection.Admin admin = new LinqDbCollection.Admin();//注册用户名和密码
                        admin.UserName = userName;
                        admin.Password = Tool.Tool.SHA1(Password);
                        admin.Condition = Condition;
                        conn.Admin.InsertOnSubmit(admin);                    LinqDbCollection.AdminInfo admininfo = new LinqDbCollection.AdminInfo(); //添加基本信息
                        admininfo.Address = Address;
                        admininfo.Birthday = Birthday;
                        admininfo.EMAIL = Email;
                        admininfo.IDcard = IDCard;
                        admininfo.Mobile = Mobile;
                        admininfo.QQ = QQ;
                        admininfo.RegionTime = DateTime.Now.ToString();
                        admininfo.Re = Re;
                        admininfo.TelPhone = TelPhone;
                        admininfo.TrueName = TrueName;
                        admininfo.UserName = userName;
                        conn.AdminInfo.InsertOnSubmit(admininfo);                    LinqDbCollection.UserRegeditLog urdl = new LinqDbCollection.UserRegeditLog(); //添加注册时的操作信息
                        urdl.AddUserName = this._iadmin.UserName;
                        urdl.AddUserType = this._iadmin.GetUserType;
                        urdl.Re = Re;
                        urdl.UserName = userName;
                        urdl.UserType = "管理员";   //就是这个基于OthersDataContext的信息,我怎么把它整合到一个事务里?
                        othersconn.UserRegeditLog.InsertOnSubmit(urdl);
                        
                        LinqDbCollection.AdminWorkLog awl = this.WriteInAdminWorkLog("添加管理员", "添加成功", true);
                        conn.AdminWorkLog.InsertOnSubmit(awl);                    othersconn.SubmitChanges();
                        othersconn.SubmitChanges();
                        ts.Complete();
                    }
      

  2.   

    TransactionScope挺好用的,就是对于sqlserver2000性能不太好走不是本地事务
      

  3.   

    LINQ本身在电泳SubmitChanges()时,会检查是否标明显式事务,如果没有,就自身生成一个临时的轻量事务,所以,调用SubmmitChanges()本身就是一个事务。--小豪