Подсказка в вопросе: используйте DATALENGTH()
. Обратите внимание, что это имеет различное поведение к LEN()
:
SELECT LEN(CAST('Hello ' AS NVARCHAR(MAX))),
DATALENGTH(CAST('Hello ' AS NVARCHAR(MAX))),
DATALENGTH(CAST('Hello ' AS NTEXT))
возвраты 5, 16, 16.
, Другими словами, DATALENGTH()
не удаляет конечные пробелы и возвращает число байтов, тогда как LEN()
обрезки конечные пробелы и возвращают количество символов.
Вы всегда должны использовать session.Dispose (); Другой - для очень странных происшествий
Советую прочитать документацию ISession по https://nhibernate.svn.sourceforge.net/svnroot/nhibernate/trunk/nhibernate/src/NHibernate/ISession.cs
В любом случае, правильный способ очистить после завершения сеанса - удалить это (или лучше, окружите использование оператором using). В этом случае «using» закрывает сеанс и подавляет финализатор, то есть предотвращает ненужное выживание объекта сеанса при следующей сборке мусора и сохраняет память.
Если соединение уже закрыто, его удаление не вызовет исключения . С другой стороны, закрытие после удаления (или после закрытия) вызывает исключение.
В документации рекомендуется вызывать разъединение вместо закрытия, поскольку это освобождает соединение с пулом соединений. Вы должны вызвать Reconnect перед использованием отключенного сеанса.
Для своих нужд я всегда использую "