Pregunta

Soy nuevo en Nhibernate, por lo que mi consulta puede parecerle trivial.

Generalmente incorporamos código de operación de datos dentro

  using (var session = sessionFactory.OpenSession())
  {
    using (var transaction = session.BeginTransaction())
    {
       ...Code for CRUD operations
       transaction.Commit();
    }
  }

Debido a que generalmente iniciamos transacción/confirmamos/retrocedemos para guardar/actualizar/eliminar datos,

Me pregunto si BeginTransaction() y Commit() son obligatorios incluso si estoy recuperando datos usandosession.Get<T>(id); osession.CreateCriteria<T>().List();

Por favor guía.

¡Gracias!

¿Fue útil?

Solución

No, no puede realizar la recuperación de datos sin transacción; todas las operaciones de NH están centradas en las transacciones.

Lea este artículo por Ayende Rahien .

Otros consejos

Siempre debe usar transacciones en consultas. No solo por el rendimiento sino también por razones de concurrencia, y Ayende dice al respecto.

Su generador de perfiles de Hibernate muestra y alerta si usa consultas que no están en el alcance de la transacción.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top