2016-04-26 4 views
0

を使用してデータベースコンテキストを作成するときに我々は、Oracleのバックエンドに接続するためにDevArtキ繝ァ繝ヨを使用しています。以前の開発マシンでは、すべてSubversionにチェックインされているdotConnect 8.4.254.4を使用していました。私は新しいdevマシンをセットアップし、8.5.616.0の最新バージョンをインストールしました。私が見つけたすべての8.4リファレンスを更新しました。チェックインしたすべてのファイルの中で "Find in Files"を実行していましたが、このバージョンについては私たちのコードが壊れています。 using (var _context = new DbContext())ランタイムエラーキ繝ァ繝ヨとEntity Frameworkの6

が、私はこの例外を取得:基本的には、右の私は、データベースコンテキストを作成しようとすると

Entity Frameworkのプロバイダタイプ 「のインスタンスのメンバーDevart.Data.Oracle .Entity.OracleEntityProviderServices、 Devart.Data.Oracle.Entity、バージョン= 8.5.616.0、文化=中立、 なPublicKeyToken = 09af7300eec23701' オブジェクトが返されませんでしたことから 継承「System.Data.Entity.Core.Common.DbProviderServices ' Entity Frameworkのプロバイダは、このクラスから継承しなければなりませんし、 「インスタンスのメンバは、プロバイダのシングルトンインスタンスを返す必要があります。 プロバイダは、Entity Frameworkの6 以降をサポートしていないので、これがあってもよいです。詳細 についてはhttp://go.microsoft.com/fwlink/?LinkId=260882を参照してください。

私はかなりの時間、同じようなエラーのためにStack Overflowを検索しました。多くの(多くのデータベースシステムにも同様に)あります。さまざまな.configファイルやアセンブリ参照を更新するなどのさまざまな解決策がありますが、私はそれをかなり試しました。また、DLLをGACから移動して、私が試したプログラムファイルで直接参照する方法についていくつかの提案がありました。私は今失われている。この問題の原因をどのように追跡することができますか?参考になるコードや情報を追加してもらえれば幸いです。ただ質問してください。

更新:

enter image description here

私は思ったんだけど:

私は私が実際Devart.Data.Oracle.Entity.OracleEntityProviderServicesクラスに行けば、基本型がが欠落しているオブジェクトブラウザに気づきましたこれが問題に関連している場合。

答えて

1

あなた*の.configをご確認ください。 entityFrameworkセクションのプロバイダのリビジョン番号6(8.5.616.6)であるべきであるが、それはDbProviderFactories 0(8.5.616.0)(http://blog.devart.com/entity-framework-6-support-for-oracle-mysql-postgresql-sqlite-and-salesforce.html#ProviderRegistration)でなければならない:

<?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" /> 
    </configSections> 
    <entityFramework> 
    <providers> 
     <provider invariantName="Devart.Data.Oracle" type="Devart.Data.Oracle.Entity.OracleEntityProviderServices, Devart.Data.Oracle.Entity, Version=8.5.616.6, Culture=neutral, PublicKeyToken=09af7300eec23701" /> 
    </providers> 
    </entityFramework> 
    <system.data> 
    <DbProviderFactories> 
     <remove invariant="Devart.Data.Oracle" /> 
     <add name="dotConnect for Oracle" invariant="Devart.Data.Oracle" description="Devart dotConnect for Oracle" type="Devart.Data.Oracle.OracleProviderFactory, Devart.Data.Oracle, Version=8.5.616.0, Culture=neutral, PublicKeyToken=09af7300eec23701" /> 
    </DbProviderFactories> 
    </system.data> 
</configuration> 

またDevartへの参照を削除*アセンブリ。それらを再度追加:

C:\プログラムファイル(x86の)\ Devart \キ繝ァ繝ヨ\オラクル\ Devart.Data.dll

C:\プログラムファイル(x86の)\ Devart \キ繝ァ繝ヨ\オラクル\ Devart.Dataを.Oracle.dll

C:\プログラムファイル(x86の)\ Devart \キ繝ァ繝ヨ\ O racle \エンティティ\ EF6 \ Devart.Data.Oracle.Entity.dll

この作品はない(そのリビジョン番号は6ですか)?

v9.0にアップグレードする場合、名前の変更点に注意してください。http://forums.devart.com/viewtopic.php?f=1&t=33571> Entity Framework Assembly Name Change。

+0

それは、ありがとう! .NETのバージョン管理は常に面倒です。 –

関連する問題