Замок AutoTx + NHibernate - MissingTransactionException в задаче

Я использую Castle Windsor + AutoTx + NHibernate Facility для декларативных транзакций в моем проекте, который до сих пор работал нормально. Но теперь у меня возникают проблемы при использовании задач TPL:

class MyServiceImpl : IMyService
{
    private readonly Func<ISession> sessionFactory; // injected by Windsor

    public MyServiceImpl(Func<ISession> sessionFactory)
    {
        this.sessionFactory = sessionFactory;
    }

    public Task DoWorkAsync()
    {
        return Task.Factory.StartNew(() => DoWork());
    }

    [Transaction]
    public virtual void DoWork()
    {
        // throws MissingTransactionException if called from Task Action in DoWorkAsync
        var session = sessionFactory(); 

        // ... do work ...
    }
}

Я что-то не так делаю здесь или просто невозможно использовать AutoTx из Задачи? Обратите внимание, что все работает как положено, когда я звоню DoWork() напрямую, а не через DoWorkAsync(),

0 ответов

Другие вопросы по тегам