Если обе операции Get
находятся в одной транзакции, они будут использовать один и тот же IDbConnection
.В противном случае вы получите неявные транзакции, и NHibernate откроет и закроет IDbConnection
для каждого запроса.В общем, вы должны попытаться сделать что-то вроде:
using (var tx = session.BeginTransaction())
{
var customer = session.Get<Customer>(123);
var order = session.Get<Order>(456);
// do stuff
tx.Commit();
}
Использование неявных транзакций не рекомендуется :
Когда мы не определяем наши собственные транзакциион возвращается в режим неявных транзакций, где каждый оператор в базе данных выполняется в своей собственной транзакции, что приводит к значительным потерям производительности (время базы данных для создания и разделения транзакций) и снижению согласованности.
Даже еслимы только читаем данные, мы должны использовать транзакцию, потому что использование транзакций гарантирует, что мы получим согласованные результаты из базы данных.NHibernate предполагает, что весь доступ к базе данных осуществляется в рамках транзакции, и настоятельно не рекомендует использовать сеанс без транзакции.