Firebird Embedded - 尝试打开文件时出错

时间:2012-02-14 07:33:17

标签: .net nhibernate firebird-embedded

我想使用Firebird 2.5。嵌入了.NET 4.0项目中的NHibernate 3.2。使用firebird提供者的代码可以很好地完成工作。但是当我尝试配置NHibernate

Configuration = new Configuration().Configure();

UPD:

当我尝试构建会话工厂时

Factory = Configuration.BuildSessionFactory();

发生错误:

文件“C:\ MYDB.FBD”的“CreateFile(open)”操作期间的I / O错误 尝试打开文件时出错

在app.config中一切都很好看

    <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 :(得分:0)

我的猜测是,firebird嵌入式使用该文件,当你打开另一个会话时,它会尝试连接到同一个文件并抛出。

以下其中一项有用:

  • 保持全局连接并执行OpenSession(globalConnection);
  • 实施IConnectionProvider以分发单个数据库连接

答案 1 :(得分:0)

因为我没有看到解决方案我会添加我发现的内容 - 这个帖子有多久了: 在使用数据库之前,您必须先调用FirebirdSql.Data.FirebirdClient.FbConnection.CreateDatabase(ConnectionString);

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

问候 Juy Juka