Замок 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()
,