2016-12-14 2 views
0

Я только начал работать в качестве разработчика, и я снова и снова сталкиваюсь с тем же вопросом. Я получаю эту ошибку:Ошибка конфигурации NHibernate

Exception (SessionFactory): An exception occurred during configuration of persistence layer./ 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() at 14/12/2016 16:52:52 0 PCService Error on: 14/12/2016 16:52:52 Referência de objeto não definida para uma instância de um objeto. em DataLayer.Repository.ConfigRobotRepository.FindByName(String name) em RSPC.PCService.ScheduleService() at line 0

Мой 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(); 
     } 

Любая помощь очень ценится! Благодаря!

+0

Это когда вы отлаживаете? Убедитесь, что ваша конфигурация NHibernate установлена ​​на «Копировать всегда», поэтому она попадает в папки «Отладка и выпуск» при создании/запуске. – TyCobb

+0

вы отправили свой пароль? :) –

+0

@ KeithNicholas только что отредактировал, я даже не заметил его после работы так много часов haha ​​ –

ответ

0

Ну есть несколько причин, почему это может произойти:

  • Вы уверены, что configuration.Configure("hibernate.cfg.xml"); линия подбирая конфигурационный файл правильно? Попробуйте указать полный путь. Убедитесь, что вы копируете его в папку bin (release/debug).

  • Проверьте правильность сведений, указанных в файле конфигурации.

  • Попробуйте настроить с помощью кода. Используйте NHibernate.Cfg.Configuration cfg = new NHibernate.Cfg.Configuration();. Обратитесь к этому post.

  • Check InnerException Исключение составляет бросок. Продолжайте бежать по дереву Exceptinn.

  • Убедитесь, что ваши объекты и файлы HBM верны и соответствуют структуре базы данных. Это наименее вероятно, потому что NHibernate создает другое исключение, в этом случае упоминает точное имя класса.

+0

Конфигурация кода решила его для меня, спасибо! –

Смежные вопросы