J'apprends un peu de NHibernate Fluent et j'ai couru à travers la classe semi-impressionnante PersistenceSpecification.Restauration des enregistrements créés par PersistenceSpecifications dans Fluent NHibernate
Je l'ai configuré dans un test unitaire pour vérifier mes mappages et cela fonctionne très bien. Cependant, il laisse l'enregistrement dans la base de données une fois terminé. J'ai essayé de le lancer dans une transaction afin que je puisse restaurer les modifications, mais une erreur se produit:
System.ObjectDisposedException: impossible d'accéder à un objet éliminé. Nom de l'objet: 'AdoTransaction' ..
Sans une transaction, je dois trouver les ID de l'enregistrement, les récupérer et les supprimer et cela ne semble pas très élégant.
Des pensées?
EDIT:
Voici l'extrait de code:
var factory = GetSessionFactory();
using (var session = factory.OpenSession())
using (var transaction = session.BeginTransaction())
{
new PersistenceSpecification<TimePeriod>(session)
.CheckProperty(x => x.EndDate, DateTime.Today)
.VerifyTheMappings();
transaction.Rollback();
}
J'ai également constaté que l'appel VerifyTheMappings avec un System.EnterpriseServices.ServiceDomain.Enter() et SetAbort()/Leave() fonctionne également. –