NHibernate самостоятельно управляет всеми соединениями с базой данных. Он открывает и закрывает базу данных так, как считает нужным, но вы можете попробовать вызвать Session.Disconnect, чтобы отключить его от соединения ADO.NET.
Однако ... если у вас включен пул соединений, который обычно является поведением соединения по умолчанию, соединение будет возвращено только в пул соединений, но не будет освобождено, и все равно будет отображаться как соединение, так что вы могли бы должны очистить пул соединений.
К сожалению, я не знаю, можете ли вы сделать это напрямую через NHibernate, но вы можете использовать объект SQLConnection для вызова вызова ClearPool или ClearAllPools ...