在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")));
}