在EF4.1的DBContext中实现事务处理(BeginTransaction)和直接执行SQL语句的示例

在EF4.1的DBContext中实现事务处理(BeginTransaction)和直接执行SQL语句的示例

(2012-03-13 10:12:48)

       public ActionResult _Function21Update(string id)
       {
           GEN_PARAMETER parameter = db.GEN_PARAMETER.Find(id);
           if (TryUpdateModel(parameter))
           {

               if (ModelState.IsValid)
               {
                   parameter.LAST_UPDATE_DATE = DateTime.Now;
                   DbConnection con =((IObjectContextAdapter)db).ObjectContext.Connection;
                   con.Open();
                   using(var tran = con.BeginTransaction())
                   {
                       try
                       {
                           string testsql = "update test_current set value = '" +parameter.VALUE + "'";
                           db.Database.ExecuteSqlCommand(testsql);
                           db.SaveChanges();
                           //testsql = "insert1 into test_log (text) values ('code:" +parameter.CODE + "value:" + parameter.VALUE + "')";
                           testsql = "insert into test_log (text) values ('code:" +parameter.CODE + "value:" + parameter.VALUE + "')";
                           db.Database.ExecuteSqlCommand(testsql);

 

                          tran.Commit();
                       }
                       catch (Exception ex)
                       {
                           tran.Rollback();
                           db.Entry(parameter).Reload();
                           Global.Logger().Error(SysAdminErr.dbSaveErr + ex.Message,ex);
                       }
                   }
                   con.Close();
               }
           }
           return View(new GridModel(db.GEN_PARAMETER.Where(p=> p.ENABLED == "0")));
       }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值