Autofac配置NHibernate ISession以允许null

时间:2013-07-23 08:26:20

标签: c# .net nhibernate dependency-injection fluent-nhibernate

我仍然是依赖注入的新手,似乎我错过了一些东西。

我使用Autofac作为我的容器来解析每个存储库对NHibernate会话的依赖。

会话接收SystemSetting的依赖关系,它几乎只包含MySql连接字符串。

在应用程序开始时,我配置所有已注册的依赖项,包括SessionFactory的初始化。

情况是,如果连接字符串错误,应用程序将抛出一个编译时异常,它无法使用提供的连接字符串连接到MySql。如果我想允许这种错误配置,那么用户可以设置他自己的正确的,比方说ip地址怎么办?

我的问题是,我无法将应用程序提供给登录表单,因为登录表单将用户存储库作为依赖关系接收,而依赖关系又接收一个假定的活动会话,因此抛出异常。

我应该从Autofac配置中排除NHibernate会话的创建吗?

1 个答案:

答案 0 :(得分:1)

我很确定在注入单身生命周期范围ISessionFactory而不是ISession时会更好。

这意味着每个组件都注入了一个ISessionFactory实例,并且每个组件都创建了自己的ISession(如果需要,还可以创建多个ISessions)。

对于关键字检查,默认情况下,NHibernate在构建ISessionFactory时会短暂连接到数据库以检查保留关键字(用于模式/ DDL创建)。您可以禁用它,因此第一次与数据库的连接将在第一次ISession使用时进行。