0

我对依赖注入仍然很陌生,似乎我错过了一些东西。

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

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

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

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

我的问题是,我无法将应用程序获取到登录表单,因为登录表单将用户存储库作为依赖项接收,而用户存储库又接收了一个据称是活动的会话,因此引发了异常。

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

4

1 回答 1

1

我相当确定在注入单例生命周期ISessionFactory而不是ISession.

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

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

于 2013-07-23T10:04:08.040 回答