实事上,一个错误的理解就是Complete()方法是提交事务的,这是错误的,事实上,它的作用的表示本事务完成,它一般放在try{}的结尾处,不用判断前台操作是否成功,如果不成功,它会自己回滚。
#region 事务问题
using (TransactionScope trans = new TransactionScope())
{
try
{
InsertUserBase(); //它插入不成功,自己回滚
UserInfos userInfo = new UserInfos
{
UserID = "1",
RealName = "zzl",
};
db.UserInfos.InsertOnSubmit(userInfo);
db.SubmitChanges();
trans.Complete();
}
catch (Exception)
{
// throw;
}
finally
{
trans.Dispose();
}
}
#endregion
static bool InsertUserBase()
{
bool flag;
try
{
UserBases userbase = new UserBases
{
UserID = "0005",
Name = "zzl",
CreateDate = DateTime.Now,
UpdateDate = DateTime.Now,
};
db.UserBases.InsertOnSubmit(userbase);
db.SubmitChanges();
flag = true;
}
catch (Exception)
{
throw;
}
return flag;
}
InsertUserBase()只要出现异常,程序将自己回滚
【推荐】腾讯云新用户域名抢购1元起,抓紧抢购
· 阮一峰:加密货币的本质
· ofo被曝订单较峰值跌六成 账户现金仅能支撑一个月
· 途牛宣布一亿美元股票回购计划及CTO任命
· 我们帮你划了一份微信公开课PRO的重点
· iPhone 4S起死回生,可降级至iOS 6.1.3
» 更多新闻...
· 以操作系统的角度述说线程与进程
· 软件测试转型之路
· 门内门外看招聘
· 大道至简,职场上做人做事做管理
2013-04-30 Asp.net MVC中的ViewData与ViewBag
2013-04-30 ASP.NET MVC中在Action获取提交的表单数据方法总结