Spring.Net+休眠配置

Spring.Net+Nhibernate Configuration

我有问题。我没有使用 nhibernate 配置 spring。这是错误信息

创建上下文时出错 'spring.root':实例失败。

这是我的配置

web.config

  <configuration>
  <configSections>
    <sectionGroup name="spring">
      <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/>
      <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core"/>
      <section name="parsers" type="Spring.Context.Support.NamespaceParsersSectionHandler, Spring.Core"/>
    </sectionGroup>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
  </configSections>
  <spring>
    <parsers>
      <parser type="Spring.Data.Config.DatabaseNamespaceParser, Spring.Data"/>
    </parsers>
    <context>
      <resource uri="~//SpringSetup.xml"/>
    </context>
  </spring>
  <appSettings></appSettings>

  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
  </system.web>
  <log4net>
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%-5level %logger - %message%newline"/>
      </layout>
    </appender>

    <!-- Set default logging level to DEBUG -->
    <root>
      <level value="DEBUG"/>
      <appender-ref ref="ConsoleAppender"/>
    </root>

    <!-- Set logging for Spring.  Logger names in Spring correspond to the namespace -->
    <logger name="Spring">
      <level value="INFO"/>
    </logger>

    <logger name="Spring.Data">
      <level value="DEBUG"/>
    </logger>

    <logger name="NHibernate">
      <level value="DEBUG"/>
    </logger>
  </log4net>

SpringSetup.xml

 <?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net"    xmlns:db="http://www.springframework.net/database">
  <!--<object id="Sauce"
          type="Ploeh.Samples.MenuModel.SauceBéarnaise,
          Ploeh.Samples.MenuModel" />-->
  <!-- Database and NHibernate Configuration -->
  <db:provider id="DbProvider"
                   provider="SqlServer-2.0"
                   connectionString="Data Source=PC-PROF\SQLEXPRESS;Database=db_workn;Trusted_Connection=False;"/>




  <!-- NHibernate SessionFactory configuration -->
  <object id="NHibernateSessionFactory" type="Spring.Data.NHibernate.LocalSessionFactoryObject, Spring.Data.NHibernate21">
    <property name="DbProvider" ref="DbProvider"/>
    <property name="MappingAssemblies">
      <list>
        <value>Work</value>
      </list>
    </property>
    <property name="HibernateProperties">
      <dictionary>
        <entry key="connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/>
        <entry key="dialect" value="NHibernate.Dialect.MsSql2008Dialect"/>
        <entry key="connection.driver_class" value="NHibernate.Driver.SqlClientDriver"/>
      </dictionary>
    </property>
  </object>
  <!-- gestionnaire de transactions -->
  <object id="transactionManager"
        type="Spring.Data.NHibernate.HibernateTransactionManager, Spring.Data.NHibernate21">
    <property name="DbProvider" ref="DbProvider"/>
    <property name="SessionFactory" ref="NHibernateSessionFactory"/>
  </object>

  <!-- Hibernate Template -->
  <object id="HibernateTemplate" type="Spring.Data.NHibernate.Generic.HibernateTemplate">
    <property name="SessionFactory" ref="NHibernateSessionFactory" />
    <property name="TemplateFlushMode" value="Auto" />
    <property name="CacheQueries" value="true" />
  </object>

  <object id="uDao"
          type="Work.Dao.UserDao,Work" />

  <object id="uMng"
          type="Work.Managers.UserManager,
          Work" />
  <object id="userDao" type="Work.Dao.UserDao, Work" init-method="init" destroy-method="destroy">
    <property name="HibernateTemplate" ref="HibernateTemplate"/>
  </object>
</objects>

抽象道

namespace Work.Dao
{
    public class AbstractDao<T> : HibernateDaoSupport where T : class
    {
        private ISessionFactory GetSessionFactory()
        {
            return null;
        }
        [Transaction(ReadOnly = true)]
        public IList<T> GetAll()
        {
            return
                 HibernateTemplate.Find<T>("select * from user");                  
        }
    }
}

用户Dao.cs

    namespace Work.Dao
{
    public class UserDao : AbstractDao<User>
    {
    }
}

User.hbm.xml

    <?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                   assembly="Work"
                   namespace="Work.Domains">
  <class name="User" table="UserAccount">
    <id name="UserId">
      <generator class="native" />
    </id>
    <property name="FirstName" />
    <property name="LastName" />
  </class>
</hibernate-mapping>

User.hbm.xml是内嵌资源,不要copy in目录out Spring.Net 是连续的,总是复制

这是我的库

-

 +Antlr3.Runtime
   +Common.Logging
   +Iesi.Collections
   +LinFu.DynamicProxy
   +log4net
   +NHibernate
   +NHibernate.DomainModel
   +NHibernate.Test
   +Spring.Aop
   +Spring.Core
   +Spring.Data
   +Spring.Data.NHibernate21

我的错误是当我经过那里时 ContextRegistry.GetContext()

namespace Work.Managers
{
    public class UserManager
    {
        public IList<User> GetAll()
        {
            UserDao userDao = (UserDao)ContextRegistry.GetContext().GetObject("userDao");// (UserDao)Utility.AppCtx("uDao");
            IList<User> List = userDao.GetAll();

            return List;
        }
    }
}
ExceptionMessage>Error creating object with name 'NHibernateSessionFactory' defined in 'file [C:\Users\marie\Documents\Visual Studio 2013\Projects\Test\Test4\Work\Work\SpringSetup.xml] line 15' : Initialization of object failed : Instance failure.</ExceptionMessage><ExceptionType>Spring.Objects.Factory.ObjectCreationException</ExceptionType>

此致

首先检查你的ConnectionString,是一个常见的SQL服务器连接失败错误信息。

尝试 \ 而不是 \

像这样:

Data Source=PC-PROF\SQLEXPRESS