Estoy aprendiendo algo de NHibernate y he encontrado la clase PersistenceSpecification casi increíble.Recuperando registros creados por PersistenceSpecifications en Fluither NHibernate
Lo he configurado en una prueba unitaria para verificar mis asignaciones y funciona muy bien. Sin embargo, deja el registro en la base de datos cuando termina. Intenté tirarlo en una transacción para poder deshacer los cambios, pero aparece un error:
System.ObjectDisposedException: no se puede acceder a un objeto eliminado. Nombre del objeto: 'AdoTransaction' ..
Sin una transacción tengo que averiguar las identificaciones del registro, recuperarlas y eliminarlas y eso no parece muy elegante.
¿Alguna idea?
EDIT:
Aquí está el fragmento de código:
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();
}
También he encontrado que el ajuste de la llamada a VerifyTheMappings con un System.EnterpriseServices.ServiceDomain.Enter() y SetAbort()/Leave() también funciona. –