Почему я не могу переопределить конфигурацию в hibernate.cfg.xml - PullRequest
2 голосов
/ 08 мая 2019

Я занимаюсь обучением NHibernate - Переопределение конфигурации шаг за шагом, но, к сожалению, я борюсь с ошибкой в ​​последней строке в Program.cs :

"Формат строки инициализации не соответствует спецификации, начинающейся с индекса 0."

Идем глубже в ошибке:

   in System.Data.Common.DbConnectionOptions.ParseInternal(Hashtable parsetable, String connectionString, Boolean buildChain, Hashtable synonyms, Boolean firstKey)
   in System.Data.Common.DbConnectionOptions..ctor(String connectionString, Hashtable synonyms, Boolean useOdbcRules)
   in System.Data.SqlClient.SqlConnectionString..ctor(String connectionString)
   in System.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions(String connectionString, DbConnectionOptions previous)
   in System.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup(DbConnectionPoolKey key, DbConnectionPoolGroupOptions poolOptions, DbConnectionOptions& userConnectionOptions)
   in System.Data.SqlClient.SqlConnection.ConnectionString_Set(DbConnectionPoolKey key)
   in System.Data.SqlClient.SqlConnection.set_ConnectionString(String value)
   in NHibernate.Connection.DriverConnectionProvider.GetConnection()
   in NHibernate.Tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.Prepare()
   in NHibernate.Tool.hbm2ddl.SchemaMetadataUpdater.GetReservedWords(Dialect dialect, IConnectionHelper connectionHelper)
   in NHibernate.Tool.hbm2ddl.SchemaMetadataUpdater.Update(ISessionFactoryImplementor sessionFactory)
   in NHibernate.Impl.SessionFactoryImpl..ctor(Configuration cfg, IMapping mapping, Settings settings, EventListeners listeners)
   in NHibernate.Cfg.Configuration.BuildSessionFactory()
   in NHibernateDataTypesMapping.Program.Main(String[] args) w C:\...\NHibernateLab\NHibernateDataTypesMapping\Program.cs:line 29

Program.cs

class Program
    {
        static void Main(string[] args)
        {
            var cfg = new Configuration();
            cfg.DataBaseIntegration(x => {
                x.LogSqlInConsole = true;
            });
            cfg.Configure();
            var sefact = cfg.BuildSessionFactory();
        }
    }

hibernate.cfg.xml

<?xml version = "1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>

    <property name="connection.connection_string">default</property>
    <!--<property name="connection.connection_string">
      Data Source=(localdb)\MSSQLLocalDB;
      Initial Catalog=NHibernateLabDB;
      Integrated Security=True;
      Connect Timeout=30;
      Encrypt=False;
      TrustServerCertificate=False;
      ApplicationIntent=ReadWrite;
      MultiSubnetFailover=False
    </property>-->

    <property name="connection.driver_class">
      NHibernate.Driver.SqlClientDriver
    </property>
    <property name="dialect">
      NHibernate.Dialect.MsSql2008Dialect
    </property>
    <mapping assembly="NHibernateDataTypesMapping"/>
  </session-factory>
</hibernate-configuration>

App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
    </startup>
  <connectionStrings>
    <add name="default" connectionString="Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=NHibernateLabDB;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"/>
  </connectionStrings>
</configuration>

Когда я использую свойство, которое содержит строку подключения в hibernate.cfg.xml все работает нормально, я могу работать на БД, но когда я пытаюсь использовать строку подключения в App .config Я получаю ошибку. Буду благодарен за помощь.

1 Ответ

0 голосов
/ 09 мая 2019

Как указано здесь

3.4.NHibernate предоставил ADO.NET соединение

connection.connection_string Строка соединения, используемая для получения соединения.connection.connection_string_name Имя строки подключения (определено в <connectionStrings> элементе файла конфигурации) для использования для получения подключения.

... другой ключ / имя в этом случае.Т.е. вместо этого:

<property name="connection.connection_string">default</property>

нам нужно это:

<property name="connection.connection_string_name">default</property>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...