【发布时间】:2011-01-02 10:23:37
【问题描述】:
我正在使用 NHibernate + Fluent 来处理我的应用程序中的数据库。到目前为止,我一直在使用 SessionSource 来创建我的 ISession 对象。我现在对来自 NHibernate 或 Fluent 的内容以及我真正应该使用什么来创建会话感到有些困惑。
ISession 来自 NHibernate,SessionSource 来自 Fluent。我从 FluentConfiguration 创建 SessionSource,目前使用 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,说“No persister for: MyProject.Model.SomeModelClass”。
我应该继续使用 SessionSource 吗?还是我错过了有关 ISessionFactory 的一些东西?
【问题讨论】:
-
您能解释一下您从会话工厂得到的错误吗?
-
在我自己的应用程序中,我使用 BuildConfiguration() 方法并将其传递给会话工厂。如果您遇到错误,该消息可能会为我们提供更多信息来解决您的问题。
-
在上面的描述中添加了例外。得跑了-稍后会回来跟进..
标签: c# .net nhibernate session fluent-nhibernate