2010-01-12 75 views
1

我想配置ASP.NET MVC 2 RC和Spring .NET 1.3以使用FluentNHibernate。使用Spring.NET和FluentNHibernate配置ASP.NET MVC 2

我设法让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中。

如果你能指出我的配置文件中应该改变什么,我会非常感激。

非常感谢!

回答

2

虽然我没有使用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:提供语法,你还需要将它添加到您的应用程序配置文件(网页/ 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> 

这里的relevant link到Spring.NET的文档

另请参阅Benny博客帖子的评论,还有更新的代码示例。

+0

但是Spring.NET的文档说 “这些提供程序的实现没有考虑到NHibernate的用法,NHibernate将SessionFactory的范围限制在每​​个连接管理的二级缓存中。 – 2010-01-13 07:59:11

+0

我不明白你的问题,你能否给我一个链接到这个声明? – BennyM 2010-01-13 14:56:51