Firebird Embedded - Ошибка при попытке открыть файл - PullRequest
0 голосов
/ 14 февраля 2012

Я хочу использовать Firebird 2.5.Встроенный с NHibernate 3.2 в .NET 4.0 проекта.Отличная работа с кодом провайдера Firebird.Но когда я пытаюсь настроить NHibernate

Configuration = new Configuration().Configure();

UPD:

, когда я пытаюсь построить фабрику сессий

Factory = Configuration.BuildSessionFactory();

, возникает ошибка:

Ошибка ввода-вывода при операции «CreateFile (open)» для файла «C: \ MYDB.FBD» Ошибка при попытке открыть файл

В приложении.конфиг все выглядит отлично

    <configSections>
    <section
        name="hibernate-configuration"
        type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate"
    />
</configSections>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
    <session-factory>
            <property name="connection.driver_class">NHibernate.Driver.FirebirdClientDriver</property>
            <property name="connection.connection_string">
                Server=localhost;
                ServerType=1;
                Database=C:\MYDB.FBD;
                User=SYSDBA;Password=masterkey
            </property>
            <property name="show_sql">true</property>
            <property name="dialect">NHibernate.Dialect.FirebirdDialect</property>
            <property name="command_timeout">60</property>
            <property name="query.substitutions">true 1, false 0, yes 1, no 0</property>
    </session-factory>
</hibernate-configuration>
<startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
</startup>

Ответы [ 2 ]

0 голосов
/ 27 февраля 2017

потому что я не нашел решения, я добавлю то, что нашел - несмотря на то, сколько лет этому посту: Вы должны позвонить FirebirdSql.Data.FirebirdClient.FbConnection.CreateDatabase(ConnectionString); перед использованием базы данных.

https://sourceforge.net/p/firebird/mailman/message/9316804/

Поздравления Juy Juka

0 голосов
/ 14 февраля 2012

я предполагаю, что встроенный Firebird использует файл исключительно, и при открытии другого сеанса он пытается подключиться к тому же файлу и выдает.

помогает одно из следующих действий:

  • удерживайте глобальное соединение и OpenSession(globalConnection);
  • внедрите IConnectionProvider для раздачи одного соединения с базой данных
...