1

会社の ERP 用に、古い (しかし稼働中の) Firebird データベースからデータを読み込もうとしています。残念ながら、Firebird データベースに関する情報はほとんどありません。他人が作ったものであり、サービス&メンテナンス契約の条件により変更することはできません。

プロジェクトと同様に、VS2013 用の DDEX プロバイダーと EF6 プロバイダーをセットアップしました。データベースの EDM を作成しようとしています。Visual Studio でエンティティ データ モデル ウィザードを実行すると、次のエラーが発生します。

データベースへの接続中にエラーが発生しました。データベースが使用できない可能性があります。タイプ 'System.Data.Entity.Core.EntityCommandExecutionException' の例外が発生しました。エラー メッセージは次のとおりです。「コマンド定義の実行中にエラーが発生しました。詳細については、内部例外を参照してください。キャッチされた内部例外のタイプは「FirebirdSql.Data.FirebirdClient.FbException」で、次のエラー メッセージが表示されました:「動的 SQL エラー SQL エラー コード = -104 トークンが不明 - 行 6、列 8 SELECT」。キャッチされた内部例外のタイプは「FirebirdSql.Data.Common.IscException」で、次のエラー メッセージが表示されました:「動的 SQL エラー SQL エラー コード = -104 トークンが不明です - 行 6、列 8 SELECT」。

ここに私のapp.configがあります:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <entityFramework>
    <defaultConnectionFactory type="FirebirdSql.Data.EntityFramework6.FbConnectionFactory, EntityFramework.Firebird" />
    <providers>
      <provider invariantName="FirebirdSql.Data.FirebirdClient" type="FirebirdSql.Data.EntityFramework6.FbProviderServices, EntityFramework.Firebird" />
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
  <system.data>
    <DbProviderFactories>
      <remove invariant="FirebirdSql.Data.FirebirdClient" />
      <add name="FirebirdClient Data Provider" invariant="FirebirdSql.Data.FirebirdClient" description=".NET Framework Data Provider for Firebird" type="FirebirdSql.Data.FirebirdClient.FirebirdClientFactory, FirebirdSql.Data.FirebirdClient" />
    </DbProviderFactories>
  </system.data>
</configuration>

私のmachine.comfigの関連セクションは次のとおりです。

<system.data>
    <DbProviderFactories>
        <add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
        <add name="FirebirdClient Data Provider" invariant="FirebirdSql.Data.FirebirdClient" description=".NET Framework Data Provider for Firebird" type="FirebirdSql.Data.FirebirdClient.FirebirdClientFactory, FirebirdSql.Data.FirebirdClient, Version=4.6.0.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c" />
    </DbProviderFactories>
</system.data>

私は DDEXProvider-3.0.1.0 を使用しており、その DataTools dll の両方が GAC にロードされています。

私はEntityFramework.Firebird-4.6.0.0-NET45を使用しており、dll、FirebirdSql.Data.FirebirdClientはGACにあります。

NuGet のソリューションで Entity Framework 6.1.2 を使用しています。(もともと 6.0 を使用していましたが、同じエラーが発生しました。)

NuGet のソリューション 4.6.0.0 で Firebird ADO.NET Data Provider を使用しています。

NuGet のソリューションで Firebird Entity Framework Provider 4.6.0.0 を使用しています。

私のデータ接続テストは問題なく、Dialect 3 を使用してデータベースと通信しています。Dialect 1 を試してみましたが、問題は解決しません。現在、文字セットに「なし」を使用しています。

サーバー エクスプローラーでは、ドメイン、システム テーブル、テーブル、ビュー、およびストアド プロシージャのすべてのフォルダーをエラーなしで参照できます。

私の意見では、エラー コードは、Firebird データベースが「.」を好まないことを示しています。コマンドの 8 列目に。誰かがこれに対する解決策を持っていますか? 誰もこの問題に遭遇しましたか?

4

1 に答える 1

2

Firebird バージョン 1.5 は古すぎて Entity Framework で使用できません。gbakを使用してデータベースのポータブル バックアップ ファイル (fbk) を作成し、Firebird サーバーを 2.5.3に更新し、 gbak を再度実行してデータベースを復元します。これで EF が機能するはずです。

于 2015-01-15T06:14:28.633 に答える