Страницы

суббота, 4 февраля 2012 г.

HNibernate. Enhima. SQLite in-memory в две строчки. Где моя сессия?

  После прошлого сообщения мы знаем, как экспортировать схему для тестирования SQLite im-memory. Ок. Но как работать с сессиями? Давайте посмотрим на интерфейс SQLiteInMemorySchemaExport.

/// <summary>
/// Returns session associated with current SQLite connection
/// </summary>
public ISession CurrentSession { get;}
/// <summary>
/// Returns stateless session associated with current SQLite connection
/// </summary>
public IStatelessSession CurrentStatelessSession {get;}
/// <summary>
/// Creates new session associated with current SQLite connection
/// </summary>
public ISession OpenSession()
/// <summary>
/// Creates new stateless session associated with current SQLite connection
/// </summary>
public IStatelessSession OpenStatelessSession()

  Полагаю, сейчас у читателя возник вопрос: есть CurrentSession и OpenSession() – что из них следует использовать? Ответ: в большинстве случаев CurrentSession. Но если вы тестируете компонент, который по какой-либо причине вызывает Dispose() на сессии – то передавать ему CurrentSession нельзя, т.к. никто больше до нее не доберётся. В таких случаях компоненту стоит передать созданную методом OpenSession() сессию. И CurrentSession и все созданные OpenSession() получают одно и тоже соединение с БД, поэтому потери данных не произойдёт.


  Удачных тестов с Enhima!

Комментариев нет:

Отправить комментарий