Ich lerne Fluent NHibernate und habe die semi-geniale PersistenceSpecification-Klasse durchlaufen.Zurückrollen von Datensätzen, die von PersistenceSpecifications in Fluent NHibernate erstellt wurden
Ich habe es in einem Komponententest eingerichtet, um meine Zuordnungen zu überprüfen, und es funktioniert gut. Es verlässt jedoch den Datensatz in der Datenbank, wenn Sie fertig sind. Ich habe versucht, es in eine Transaktion zu werfen, so kann ich die Änderungen zurücksetzen, aber ich erhalte einen Fehler:
System.ObjectDisposedException: Kann nicht auf ein Objekt zugreifen. Objektname: 'AdoTransaction' ..
Ohne eine Transaktion muss ich die IDs des Datensatzes herausfinden, sie abrufen und löschen und das scheint nicht sehr elegant.
Irgendwelche Gedanken?
EDIT:
Hier ist der Code-Schnipsel:
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();
}
Ich habe auch festgestellt, dass das Wrapping des VerifyTheMappings-Aufrufs mit System.EnterpriseServices.ServiceDomain.Enter() und SetAbort()/Leave() ebenfalls funktioniert. –