NHibernate配置错误

时间:2016-12-14 19:03:28

标签: nhibernate

我刚刚开始作为开发人员工作,我一遍又一遍地遇到同样的问题。我一直收到这个错误:

  

异常(SessionFactory):在配置持久层期间发生异常。 / em NHibernate.Cfg.ConfigurationSchema.HibernateConfiguration..ctor(XmlReader hbConfigurationReader,Boolean fromAppSetting)      em NHibernate.Cfg.Configuration.Configure(XmlReader textReader)      em NHibernate.Cfg.Configuration.Configure(String fileName,Boolean ignoreSessionFactoryConfig)      em DataLayer.Repository.NHibernateHelper.get_SessionFactory()于2016年12月14日16:52:52 0   PCService错误发布时间:2016/12/14 16:52:52参考资料定义了对象的定义。 em DataLayer.Repository.ConfigRobotRepository.FindByName(String name)      第7行的RSPC.PCService.ScheduleService()

我的hibernate.cfg.xml:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>
    <property name="connection.provider">
      NHibernate.Connection.DriverConnectionProvider
    </property>
    <property name="dialect">
      NHibernate.Dialect.MySQLDialect
    </property>
    <property name="connection.driver_class">
      NHibernate.Driver.MySqlDataDriver
    </property>
    <property name="connection.connection_string">
      Server=localhost; Database=bd; Uid=ti; Pwd=************;
    </property>
    <property name="show_sql">false</property>
  </session-factory>
</hibernate-configuration>

我的NHibernateHelper.cs:

public class NHibernateHelper
    {
        private static ISessionFactory _sessionFactory;
        private static ISessionFactory SessionFactory
        {
            get
            {
                try
                {
                    if (_sessionFactory == null)
                    //CreateSessionFactory();
                    {
                        var configuration = new Configuration();
                        //configuration.SetProperty(NHibernate.Cfg.Environment.ConnectionString, ConnectionString);
                        configuration.Configure("hibernate.cfg.xml");

                        configuration.AddAssembly(typeof(ConfigRobot).Assembly);

                        _sessionFactory = configuration.BuildSessionFactory();
                    }

                    return _sessionFactory;
                }
                catch (Exception e)
                {
                    System.Diagnostics.StackTrace trace = new     System.Diagnostics.StackTrace(e, true);
                    var frame = trace.GetFrame(0);
                    var line = frame.GetFileLineNumber();
                    Log("Exception (SessionFactory): " + e.Message + " / " + e.StackTrace + " at {0} " + line, Path.GetTempPath() + "PCService" + ".txt");
                    return null;
                }
            }
        }

        public static ISession OpenSession()
        {
            return SessionFactory.OpenSession();
        }

非常感谢任何帮助!谢谢!

1 个答案:

答案 0 :(得分:0)

为什么会出现这种情况有多种原因:

  • 您确定configuration.Configure("hibernate.cfg.xml");行正确获取配置文件吗?尝试指定完整路径。确保将其复制到bin(发布/调试)文件夹。

  • 确保配置文件中提到的详细信息正确无误。

  • 尝试使用代码进行配置。使用NHibernate.Cfg.Configuration cfg = new NHibernate.Cfg.Configuration();。有关详细信息,请参阅此post

  • 检查抛出异常的InnerException。继续沿着Exceptinn树跑。

  • 确保您的实体和HBM文件正确并与数据库结构匹配。这是最不可能的原因,因为在提到类的确切名称的情况下,NHibernate会抛出不同的异常。