2015-04-21 81 views
2

我遇到问题。我没有用nhibernate配置spring。这里是错误信息Spring.Net + Nhibernate配置

创建上下文'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嵌入资源和d ONT在目录中复制出 Spring.Net是contenu始终复制

这里我的库

-

+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> 

问候

+0

那么什么代码的一部分实际上是给你的麻烦?如果异常信息是英文的,这也会有所帮助 - 我相当肯定这里的大多数人不会说法语。 – aevitas

+0

我编辑,谢谢 – inforho

+0

我的连接字符串像Najeria后说我有一个新的错误:创建上下文'spring.root'时出错:需要sessionFactory或hibernateTemplate – inforho

回答

0

检查ConnectionString第一,是一个常见的SQL Server连接失败错误消息。

尝试\代替\\

像这样:

Data Source=PC-PROF\SQLEXPRESS 
+0

谢谢Najera。但现在它给了我另一个错误:创建上下文'spring.root'时出错:sessionFactory或hibernateTemplate是必需的。你可以帮我吗? – inforho

+0

将SessionFactory注入到您的DAO对象。 – Najera

+0

我在注入SessionFactory对象后发布了一篇新文章。你可以去看看吗?你的 – inforho