-1

app.configに次の設定があります。

<hibernate-configuration  xmlns="urn:nhibernate-configuration-2.2" >
    <session-factory name="Nh.Data">
       <property name="connection.provider">
           NHibernate.Connection.DriverConnectionProvider
       </property>
       <property name="dialect">
           NHibernate.Dialect.MsSqlCeDialect  </property>
       <property name="connection.driver_class">
           NHibernate.Driver.SqlClientDriver
       </property>
       <property name="connection.connection_string">
           Data Source=NhData.sdf
       </property>
       <property name="adonet.batch_size">16</property>
       <property name="generate_statistics">true</property>
       <property name="show_sql">true</property>
       <mapping assembly="Nh.Model"/>
    </session-factory>
</hibernate-configuration>

次のコードを使用してデータベースにアクセスする場合、

    private ISessionFactory CreateSessionFactory(){
        var cfg = new NHibernate.Cfg.Configuration().Configure();
        return cfg.BuildSessionFactory();
    }

行に次のエラーが表示されますreturn cfg.BuildSessionFactory();

    A network-related or instance-specific error occurred while
    establishing a connection to SQL Server. The server was not found or
    was not accessible. Verify that the instance name is correct and
    that SQL Server is configured to allow remote connections.
    (provider: Named Pipes Provider, error: 40 - Could not open a
    connection to SQL Server)

これは、 ConnectionStrings.comで推奨されているように接続プロパティを変更したときに発生するエラーと同じです。

connection.connection_stringプロパティをに変更するData Source=|DataDirectory|\bin\Debug\NhData.sdfと、エラーは次のように変わります。

    A network-related or instance-specific error occurred while
    establishing a connection to SQL Server. The server was not found or
    was not accessible. Verify that the instance name is correct and
    that SQL Server is configured to allow remote connections.
    (provider: SQL Network Interfaces, error: 26 - Error Locating
    Server/Instance Specified)

SQL Server Compactの実行を有効にするために、アプリケーションフォルダーに次のファイルがあります

    sqlceca40.dll      sqlcecompact40.dll           sqlceoledb40.dll
    sqlceer40EN.dll    sqlceme40.dll                sqlceqp40.dll
    sqlcese40.dll      System.Data.SqlServerCe.dll  NhData.sdf

Visual Studio IDE接続ダイアログ内から接続して接続をテストできるため、データベースファイルへのパスが正しいことがわかります。プライベート展開と中央展開(SQL Server Compact)を読み直しました。上記のエラーを検索すると、私の問題とは関係のない結果が返されます。

使用しているラップトップはWindows7Professional 64ビットを実行しており、ビルド後のイベントを使用してデータベースとDLLをアプリケーションフォルダーにコピーしています。

私が見逃している、または間違っていることはありますか?

4

1 に答える 1

3

私は自分が間違っていたことを見つけました。次のプロパティ<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>はSQLServer用であり、SQL ServerCompactEdition用ではありません。プロパティ値をで置き換えると 正常にNHibernate.Driver.SqlServerCeDriver機能します。

于 2012-05-04T06:21:21.577 に答える