Je sais que NHibernate prend en charge les transactions ambiantes, car les sessions NHibernate s'enrôlent dans les transactions ambiantes à l'intérieur d'une portée de transaction. Cependant, il y a quelques bizarreries, considérez le test suivant:Support manquant pour les transactions ambiantes dans nhibernate?
[Test]
public void Transaction_RollsBackTransactionInsideOfAmbientTransaction_AmbientTransactionAborted()
{
// arrange
ISessionFactory sessionFactory = SessionFactoryOneTimeInitializer.GetTestSessionFactory();
ISession session = sessionFactory.OpenSession();
SessionFactoryOneTimeInitializer.CreateDataBaseSchemaIfRequiredByConfiguration(session);
using (new TransactionScope())
{
using (ITransaction transaction = session.BeginTransaction())
{
// act
transaction.Rollback();
}
// assert
Assert.AreEqual(TransactionStatus.Aborted, Transaction.Current.TransactionInformation.Status);
}
}
Ce test échoue. Comment NHibernate s'assurera-t-elle que la transaction ambiante n'est pas conservée dans la base de données?