0

Firebird 2.5 を使いたいです。.NET 4.0 プロジェクトに NHibernate 3.2 が組み込まれています。作業は、firebird プロバイダーのコードで素晴らしいです。しかし、NHibernate を設定しようとすると

Configuration = new Configuration().Configure();

更新:

セッションファクトリーを構築しようとすると

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>

4

2 に答える 2

0

私の推測では、埋め込まれたfirebirdはファイルを排他的に使用し、別のセッションを開くと、同じファイルに接続しようとしてスローされると思います。

次のいずれかが役立ちます。

  • グローバル接続を保持し、行うOpenSession(globalConnection);
  • IConnectionProvider を実装して、単一のデータベース接続を配布する
于 2012-02-14T11:25:13.663 に答える