C# 事务提交(非数据库)
.Net 2.0开始支持
static void Main(string[] args)
{
using (TransactionScope ts = new TransactionScope())
{
UserBLL u = new UserBLL();
TeacherBLL t = new TeacherBLL();
u.ADD();
t.ADD();
ts.Complete();
}
}
获取事务ID
Transaction.Current.TransactionInformation.LocalIdentifier
嵌套事务
static void Main(string[] args) { using (TransactionScope ts = new TransactionScope()) { Console.WriteLine(Transaction.Current.TransactionInformation.LocalIdentifier); UserBLL u = new UserBLL(); TeacherBLL t = new TeacherBLL(); u.ADD(); using (TransactionScope ts2 = new TransactionScope(TransactionScopeOption.Required)) { Console.WriteLine(Transaction.Current.TransactionInformation.LocalIdentifier); t.ADD(); ts2.Complete(); } ts.Complete(); } }
}
1、使用嵌套事务时,默认TransactionScopeOption的属性为Required
2、如果把TransactionScopeOption设为RequiresNew,则嵌套的事务块和外层的事务块各自独立,互不影响
3、TransactionScopeOption设为Suppress则为取消当前区块的事务,一般很少使用。