Transactions Castle.DynamicProxy.IInterceptor和并行事务

Transactions Castle.DynamicProxy.IInterceptor和并行事务,transactions,parallel-processing,castle,dynamic-proxy,Transactions,Parallel Processing,Castle,Dynamic Proxy,我正在构建一个类来拦截事务,但是我有一个问题。如果我运行应用程序,页面会同时调用多个方法,我会收到以下错误消息:SqlConnection不支持并行事务 我注意到,在某个时刻,一个随机事务没有运行Commit方法。在其他研究中,我发现缺少调用提交可能是问题的原因。但是,我想知道如何使每个调用事务都可以作为单个上下文处理,而不会生成此错误。我用的是尼尔内特 我正在开发的课程是: public class ServiceTransactionInterceptor : Castle.DynamicP

我正在构建一个类来拦截事务,但是我有一个问题。如果我运行应用程序,页面会同时调用多个方法,我会收到以下错误消息:SqlConnection不支持并行事务

我注意到,在某个时刻,一个随机事务没有运行Commit方法。在其他研究中,我发现缺少调用提交可能是问题的原因。但是,我想知道如何使每个调用事务都可以作为单个上下文处理,而不会生成此错误。我用的是尼尔内特

我正在开发的课程是:

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

}