即使配置了web.config,NHibernate也会询问hibernate.cfg.xml

时间:2015-05-18 14:23:23

标签: asp.net asp.net-mvc nhibernate asp.net-mvc-5 nhibernate-mapping

这是ASP.NET MVC 5示例应用程序。 试图学习MVC的模块NHibernate。

如果我理解正确的话。如果设置在web.config中编码为configsection,则不需要hibernate.cfg.xml文件。

是xmlns版本错了吗?或者你看到拼写错误的东西? 那么为什么即使配置了web.config,NHibernate也会问hibernate.cfg.xml? (感谢)

<configSections>
<section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler,NHibernate" />
...

<hibernate-configuration xmlns="urn:nhibernate-configuration-version-2.2">
    <session-factory>
  <property name="dialect">NHibernate.Dialect.MySQLDialect</property>
  <property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property>
  <property name="connection.connection_string_name">LocalMySqlServer</property>
</session-factory>
</hibernate-configuration>

收到此错误:

Could not find file '...\Visual Studio 2013\Projects\bin\Debug\hibernate.cfg.xml'.

和DB类静态成员(在global.asax.cs Application_Start方法中使用过一次)是:

public static void Configure()
    {

        var config = new Configuration();
        config.Configure();


        var mapper1 = new ModelMapper();
        mapper.AddMapping<UserMap>();
        config.AddMapping(mapper.CompileMappingForAllExplicitlyAddedEntities());
        _sessionFactory = config.BuildSessionFactory();

// _session factory is a class member defined as 
// private static ISessionFactory _sessionFactory;
    }

安装NHibernate 4.0.3.4000 [使用nuget]

1 个答案:

答案 0 :(得分:1)

找到了答案。似乎方案键在新的nhibernate版本中被改变了

改变

<hibernate-configuration xmlns="urn:nhibernate-configuration-version-2.2">

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">

解决了这个问题。我确定,因为我重新测试了第一个方案。和boM!同样的错误抛出。所以xmlns字符串已更新。

我是怎么找到的。 菜单中打开了web.config&gt; xml&gt; Schemes [添加了nhibernate xsd文件,您可以在项目\包中找到它们] 比自动完成确实在web.config中工作,并向我显示正确的架构字符串。