我使用的基本结构是:
using(IDataContext ctx = DataContext.Instance())
{
try{
ctx.BeginTransaction();
ctx.Commit();
}
catch(Exception)
{
ctx.RollbackTransaction();
throw;
}
}
我想做的是嵌套事务,以便可以使用函数式编程进行构建。
非常简单的版本:
public void DoSomething(){
using(IDataContext ctx = DataContext.Instance())
{
try{
ctx.BeginTransaction();
// make a change to the data
ctx.Commit();
}
catch(Exception)
{
ctx.RollbackTransaction();
throw;
}
}
}
public void CallingFunction(){
using(IDataContext ctx = DataContext.Instance())
{
try{
ctx.BeginTransaction();
//do some stuff
DoSomething();
//do some other stuff
ctx.Commit();
}
catch(Exception)
{
ctx.RollbackTransaction();
throw;
}
}
}
所以我希望能够有多个“CallingFunctions”,所有这些函数都调用DoSomething(),但是如果DoSomething之后CallingFunction中的代码中抛出异常,那么我希望DoSomething也回滚。
DoSomething可能与CallingFunction在同一个类中,也可能在另一个类中。
当然这是可能的,但我还没有找到答案。
谢谢你的帮助。
在检查了我的代码之后,我意识到它正在使用DotNetNuke.Data命名空间中的DataContext。也许DNN专家可以帮忙?