【问题标题】:Configuring ASP.NET MVC 2 with Spring.NET and FluentNHibernate使用 Spring.NET 和 FluentNHibernate 配置 ASP.NET MVC 2
【发布时间】:2010-01-12 15:17:49
【问题描述】:

我正在尝试配置 ASP.NET MVC 2 RC 和 Spring .NET 1.3 以使用 FluentNHibernate。

我已经设法让 FluentNHibernate 在控制台应用程序中运行。

目前 ASP.NET MVC 2 RC 和 Spring .NET 对我来说工作正常,但我在配置 FluentHibernate 时遇到问题。

在问这个问题之前,我已经谷歌了很多,我也在 StackOverflow 上查看了相关问题。

我知道有这篇 (http://www.bennymichielsen.be/post/2009/01/04/Using-Fluent-NHibernate-in-SpringNet.aspx) 博客文章和 Spring .NET 文档 ORM 章节 (http://www.springframework.net/doc-latest/reference/html/orm.html)

就像 Benny 的博客建议我创建了“FluentNHibernateLocalSessionFactoryObject”一样,该类的内容与博客文章中的内容相同。

我的 Spring 配置文件如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net"
         xmlns:db="http://www.springframework.net/database"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.springframework.net http://www.springframework.net/xsd/spring-objects.xsd">


  <object id="MySessionFactory" type="Project.Core.NHinbernate.FluentNHibernateLocalSessionFactoryObject, Spring.Data.NHibernate20">
    <property name="DbProvider" ref="DbProvider"/>
    <property name="FluentNHibernateMappingAssemblies">
      <list>
        <value>Project.Core.NHibernate</value>
      </list>
    </property>
    <property name="HibernateProperties">
      <dictionary>
        <entry key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/>
        <entry key="hibernate.dialect" value="NHibernate.Dialect.MsSql2008Dialect"/>
        <entry key="hibernate.connection.driver_class" value="NHibernate.Driver.SqlClientDriver"/>
      </dictionary>
    </property>
  </object>

  <object id="HomeController" singleton="false" type="Project.UI.Controllers.HomeController">
    <property name="MySessionFactory" value="MySessionFactory" />
  </object>
</objects>

我认为这个配置缺少很多东西(连接字符串、正确的 SQL Server 2008 方言和 DB 提供程序)。

我的目标是简单地将 SessionFactory 注入 HomeController。

如果您能指出我的配置文件中应该更改的内容,我将非常感激。

非常感谢!

【问题讨论】:

    标签: .net asp.net-mvc orm fluent-nhibernate spring.net


    【解决方案1】:

    虽然我没有使用过 ASP.NET MVC,但您确实需要将 DbProvider 添加到您的配置文件中。 DbProvider 将保存连接字符串。所以把它添加到你的配置文件中。

      <db:provider id="DbProvider" 
      provider="System.Data.SqlClient" 
      connectionString="Data Source=(local);Database=Spring;User ID=springqa;Password=springqa;Trusted_Connection=False"/>
    

    为了使用 db:provider 语法,您还需要将其添加到您的应用程序配置文件 (web/app.config)

    <configuration>
        <configSections>
           <sectionGroup name="spring">
               <section name="parsers" type="Spring.Context.Support.NamespaceParsersSectionHandler, Spring.Core" />
           </sectionGroup>
        </configSections>
    <spring>
        <parsers>
           <parser type="Spring.Data.Config.DatabaseNamespaceParser, Spring.Data" />
        </parsers>
    </spring>
    </configuration>
    

    这是 Spring.NET 文档的relevant link

    另请查看 Benny 博文的 cmets,有更新的代码示例。

    【讨论】:

    • 但是 Spring .NET 的文档说“这些提供程序实现不考虑与 NHibernate 的使用。NHibernate 将管理二级缓存的 SessionFactory 作用于每个连接。”
    • 我不明白你的问题,你能给我那个声明的链接吗?
    猜你喜欢
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    相关资源
    最近更新 更多