Я использую NHibernate + Fluent для обработки базы данных в моем приложении. До сих пор я использовал SessionSource для создания своих объектов ISession. Теперь я немного озадачен тем, что происходит от NHibernate или Fluent, и что мне действительно нужно использовать для создания моих сессий.
ISession происходит из NHibernate, а SessionSource от Fluent. Я создаю SessionSource из FluentConfiguration и в настоящее время использую SessionSource для создания сеансов. Это моя функция для создания сессий. FluentConfiguration и SessionSource используются повторно:
if (_sessionSource == null)
{
_cfg = Fluently.Configure().Database(SQLiteConfiguration.Standard.ShowSql().UsingFile("test.db"));
_sessionSource = new SessionSource(_cfg.BuildConfiguration().Properties, new MappingsPersistenceModel());
var session = _sessionSource.CreateSession();
_sessionSource.BuildSchema(session);
return session;
}
return _sessionSource.CreateSession();
Это выглядит разумно? Звучит более привлекательно использовать ISessionFactory для создания сессий, поэтому я попробовал использовать один. Это происходит из NHibernate, так что я не знаю, является ли это причиной того, что это проблема, но он не работает, когда мои сессии создаются из ISessionFactory.
// Done once:
_sessionFactory = _cfg.BuildSessionFactory();
// Done each time a session is requested:
_sessionFactory.OpenSession()
Используя это, я получаю MappingException
при использовании сеанса, говоря « Нет сохранения для: MyProject.Model.SomeModelClass ».
Должен ли я продолжать использовать SessionSource? Или я что-то упускаю из-за ISessionFactory?