Transactions Castle.DynamicProxy.IInterceptor和并行事务
我正在构建一个类来拦截事务,但是我有一个问题。如果我运行应用程序,页面会同时调用多个方法,我会收到以下错误消息:SqlConnection不支持并行事务 我注意到,在某个时刻,一个随机事务没有运行Commit方法。在其他研究中,我发现缺少调用提交可能是问题的原因。但是,我想知道如何使每个调用事务都可以作为单个上下文处理,而不会生成此错误。我用的是尼尔内特 我正在开发的课程是:Transactions Castle.DynamicProxy.IInterceptor和并行事务,transactions,parallel-processing,castle,dynamic-proxy,Transactions,Parallel Processing,Castle,Dynamic Proxy,我正在构建一个类来拦截事务,但是我有一个问题。如果我运行应用程序,页面会同时调用多个方法,我会收到以下错误消息:SqlConnection不支持并行事务 我注意到,在某个时刻,一个随机事务没有运行Commit方法。在其他研究中,我发现缺少调用提交可能是问题的原因。但是,我想知道如何使每个调用事务都可以作为单个上下文处理,而不会生成此错误。我用的是尼尔内特 我正在开发的课程是: public class ServiceTransactionInterceptor : Castle.DynamicP
public class ServiceTransactionInterceptor : Castle.DynamicProxy.IInterceptor
{
private readonly ISession db;
private ITransaction transaction = null;
public ServiceTransactionInterceptor(ISession db)
{
this.db = db;
}
public void Intercept(IInvocation invocation)
{
bool iAmTheFirst = false;
if (transaction == null)
{
transaction = db.BeginTransaction();
iAmTheFirst = true;
}
try
{
invocation.Proceed();
if (iAmTheFirst)
{
iAmTheFirst = false;
transaction.Commit();
transaction = null;
}
}
catch (Exception ex)
{
if (iAmTheFirst)
{
iAmTheFirst = false;
transaction.Rollback();
db.Clear();
transaction = null;
}
throw new ServicoException(ex);
}
}
}