Ответ 1
Нет, вы не можете выполнять поиск данных без транзакции; все операции NH ориентированы на транзакцию.
Прочтите эту статью Айенде Рахиен.
Я новичок в Nhibernate, поэтому мой запрос может показаться вам тривиальным.
Обычно мы вставляем код операции с данными внутри
using (var session = sessionFactory.OpenSession())
{
using (var transaction = session.BeginTransaction())
{
...Code for CRUD operations
transaction.Commit();
}
}
Поскольку мы обычно выполняем BeginTransaction/Commit/Rollback для сохранения/обновления/удаления данных,
Интересно, нужны ли BeginTransaction()
и Commit()
, даже если я возвращаю данные, используя
session.Get<T>(id);
или
session.CreateCriteria<T>().List();
Пожалуйста, направляйте.
Спасибо!
Нет, вы не можете выполнять поиск данных без транзакции; все операции NH ориентированы на транзакцию.
Прочтите эту статью Айенде Рахиен.
Вы всегда должны использовать транзакции в запросах. Не только для производительности, но и для причин concurrency, и Ayende говорит об этом.
Профилировщик Hibernate показывает и предупреждает, если вы используете запросы не в области транзакций.