在EF4.1的DBContext中实现事务处理(BeginTransaction)和直接执行SQL语句的示例
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"))); }