流畅的 nHibernate 数据库连接

Posted

技术标签:

【中文标题】流畅的 nHibernate 数据库连接【英文标题】:Fluent nHibernate Database Connection 【发布时间】:2011-07-06 09:53:28 【问题描述】:

在我的应用程序中,我使用 fluent nhibernate 和 MVC 3。我有单独的业务层、DAL 和存储库层,现在我必须询问在哪里创建数据库连接、DAL 或 MVC 中的天气(用户界面层)

注意:我想在 web.config 文件中定义连接字符串。

有人知道吗?

谢谢

【问题讨论】:

【参考方案1】:

我在我的 MVC 项目中做了这样的事情:-

  <connectionStrings>
    <add name="db" 
      connectionString="Server=.;Database=NHCookbook;Trusted_Connection=SSPI;"/>
  </connectionStrings>

然后在 mvc 项目中,我构建了我的会话工厂,例如:-

  var nhConfig = Fluently
    .Configure()
    .Database(MsSqlConfiguration.MsSql2008
                .ConnectionString(c => c.FromConnectionStringWithKey("db"))
    )
    .Mappings(m => m.FluentMappings.AddFromAssemblyOf<AMODELCLASS>()
    )
    .BuildConfiguration();

   sessionFactory = nhConfig.BuildSessionFactory();

【讨论】:

是的,然后我个人使用IOC 将会话工厂传递给我的存储库/DAO 层。但正如 Tomas 指出的那样,这是可选的,实际上可以在 DAL 中使用 我收到此错误“创建 SessionFactory 时使用了无效或不完整的配置。” 您使用的是哪个版本的 NHibernate? 我使用 3.1 版本的 nHibernate 此代码是从我使用 3.1 的演示项目中提取的,其他原因导致错误。代码正确【参考方案2】:

由于应用程序运行您的代码将是 ASP.NET MVC 项目,Web.config 中的配置设置将在任何类库中可用。因此,您应该能够在任何项目中使用 Rippo 建议的配置代码(但是,如果其他应用程序没有定义具有相同键的连接字符串,则它不能被其他应用程序重用)。

我建议您将 NHIbernate 的配置代码以及其他与 NHIbernate 相关的东西放在 DAL 项目中。

【讨论】:

是的,我正在按照您的建议进行操作。谢谢 Rippo 在他的帖子中提到的代码给出了异常“创建 SessionFactory 时使用了无效或不完整的配置。”知道这个异常是什么吗?

以上是关于流畅的 nHibernate 数据库连接的主要内容,如果未能解决你的问题,请参考以下文章

NHibernate 和数据库连接故障转移?

流畅的 nHibernate 映射问题

失去 Oracle 数据库连接后恢复 NHibernate

使用 nhibernate 跨数据库连接

NHibernate各种数据库连接参数文件配置方法说明

NHibernate各种数据库连接参数文件配置方法说明