2

私は、.Netアプリケーションで運がなくても、firebirdデータベース(組み込みバージョン)のエンティティフレームワーク6.0プロバイダーをセットアップする方法に関するドキュメントを見つけようとしています。

私が見つけたドキュメントのほとんどは ADO.Net プロバイダーに関するものでしたが、具体的にはエンティティ フレームワークのものを探しています。

1) app.config を使用して firebird EF6 プロバイダーをセットアップする方法 2) オプションとして、新しい EF6 コード セットアップを使用してセットアップする方法 (DbConfiguration クラスをオーバーライドすることにより): firebird EF6 プロバイダー。

プロバイダーへのリンクはこちら: http://www.firebirdsql.org/en/additional-downloads/

そして、.net に関する Web サイトで見つけたドキュメント (ただし、ADO のみで、エンティティ フレームワーク DLL については何もありません)。 http://www.firebirdsql.org/en/net-examples-of-use/

私が知っている唯一のことは、組み込みデータベースの場合、ServerType は 1 でなければならないということです

4

2 に答える 2

4

magicandre1981 のコメントのおかげで、単に firebird の Web サイトから dll をダウンロードする代わりに、NuGet を使用してみました。

通常、NuGet の自動インストール パッケージは避けますが、それがさらに役立つので、とにかく試してみることにしました。エンティティ フレームワーク コンテキストの初期化中にエラー メッセージが表示されなくなりました。

ただし、コンパイル中に、依存関係を共有しているがバージョン番号が異なる 2 つのアセンブリについて警告がありました。ご想像のとおりです... Visual Studio は、それらのアセンブリが何であるかを判断するのに十分ではありませんでした。とりあえず無視して、プログラムを実行して System.Data.ProviderIncompatibleException を取得しました。無視した Visual Studio の警告はそれほど驚くことではありません。

警告に戻り、github ( https://github.com/mikehadlow/AsmSpy ) のAsmSpy.exe のおかげで、次のことがわかりました。

Reference: FirebirdSql.Data.FirebirdClient
    4.7.0.0 by EntityFramework.Firebird
    4.5.0.0 by FirebirdTest

FirebirdTest は、エンティティ フレームワークで firebird をテストすることを唯一の目的とする csproj の名前です。ソリューションには、このプロジェクトしかありません。NuGet次のコマンドを使用してインストールしたため、FirebirdSql.Data.FirebirdClientがインストールされました。

Install-Package EntityFramework.Firebird

これは基本的に、NuGet パッケージが間違った Firebird.Data.FirebirdClient アセンブリ バージョンをインストールしたことを意味します。だから私は次のことをしました

  1. NuGet packages.config ファイルを編集して、Firebird.Data.FirebirdClient アセンブリ バージョンの正しいバージョンがダウンロードされるようにしました。
  2. Firebird.Data.FirebirdClient の古いバージョンのパッケージを削除しました
  3. NuGet パッケージを強制的に復元しましたが、今回は正しいバージョンがダウンロードされました。
  4. そして最後にプロジェクトの app.config を編集して、bindingRedirect が 4.5.0.0 ではなく 4.7.0.0 を使用するようにしました。これは、app.config ファイルのセクション configuration/runtime/assemblyBinding/dependentAssembly セクション内にあります。

        <bindingRedirect oldVersion="0.0.0.0-4.7.0.0" newVersion="4.7.0.0" />
    

基本的に、NuGet パッケージは間違っており、正しいバージョンの Firebird.Data.FirebirdClient アセンブリをインストールしません。運が悪いのかもしれませんが、NuGet 自体が問題ではないことを知っていても、NuGet のファンではないのはそのためです。

いずれにせよ、おわかりのように、Firebird をエンティティ フレームワークで動作させるのは簡単ではありません (Firebird DDEX パッケージで現在経験している地獄については説明しません)。一方で、firebird データベース自体は組み込みデータベース技術として非常に有望に思えます。エンティティ フレームワークと統合するための適切なドキュメントがないため、悲しいことに、必要以上に作業が難しくなっています。

于 2015-09-01T19:25:26.123 に答える