3

これらのビデオ シリーズに従って、VS2013 を使用して ASP.Net MVC Web アプリケーションを作成する方法を学んでいます。次のエラーが発生したとき:

不変名 'Oracle.ManagedDataAccess.Client' を持つ ADO.NET プロバイダーの Entity Framework プロバイダーが見つかりません。アプリケーション構成ファイルの「entityFramework」セクションにプロバイダーが登録されていることを確認してください。詳細については 、http: //go.microsoft.com/fwlink/?LinkId=260882を参照してください。

(ビデオでは、使用されているデータベース プロバイダーはSystem.Data.SqlClientASP.Net アプリケーションでは当然ですが、使用する必要がありますOracle.ManagedDataAccess.Client)

エラー自体は、SOでは新しいものではありません。そして、エラー メッセージと SO の質問の受け入れられた回答で示唆されているように、ODP.Net プロバイダーが EF 6.0 でサポートされているかどうかを確認したところ . それにもかかわらず、私はまだそれを機能させることができません。

私は MVC にかなり慣れていないので、この時点で間違って理解している MVC アプリケーション/設定の概念があれば、あなたの理解を求めます。あなたの修正を受け入れます。

役に立つかもしれないいくつかの追加情報:

  • VS2013 が提供する ASP.Net Web アプリケーション テンプレートを使用して、プロジェクトを開始します。私はそれにMVCテンプレートを使用し、「フォルダーとコア参照を追加する」MVCのみを使用します。「単体テストを追加する」でも「クラウドでホストする」でもありません
  • テンプレートにはapp.configファイルはありませんが、ファイルはありWeb.configます (これは何か違いがありますか? エラー メッセージで、「プロバイダーがアプリケーション構成ファイルの 'entityFramework' セクションに登録されていることを確認してください」と提案されています)。
  • Web.config ファイルで、次のentityFramework部分を見つけました。
    <entityFramework>
      <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
        <parameters>
          <parameter value="mssqllocaldb" />
        </parameters>
      </defaultConnectionFactory>
      <providers>
        <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
      </providers>
    </entityFramework>
  • あることに気付く

    <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />` 
    

    そこにライン。したがって、同様に追加しようとします:

    <provider invariantName="Oracle.ManagedDataAccess.Client" type=???, EntityFramework.???" />
    

    typeしかし、属性に何を書けばいいのかわからずEntityFramework.???、数時間立ち往生しています。入れないと、次の警告が表示されます。

    必要な属性「タイプ」がありません

    これについての助けをいただければ幸いです。

この問題を解決するためにプロバイダーを追加する以外に、他に何かする必要があることがわかっている場合も、私はオープンです。ファイル内の接続文字列は次のweb.configとおりです。

<connectionStrings>
  <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-MvcWebApplication1-20160212010850.mdf;Initial Catalog=aspnet-MvcWebApplication1-20160212010850;Integrated Security=True"
    providerName="System.Data.SqlClient" />
   <add name="EmployeeContext" connectionString="Data source=aaaaa;user id=bbbbbb;password=cccccc;persist security info=True"   providerName="Oracle.ManagedDataAccess.Client"/>
</connectionStrings>
4

1 に答える 1

0

Oracle の ODP.Net ドキュメントOracle コミュニティ フォーラムから回答を得ました。

どうやら、受け入れられた回答によると、2014 年初頭まで、EF 6 はそのドキュメントに記載されているように ODAC によってサポートされていません。作業するには EF 5 を部分的に使用する必要がありますOracle.ManagedDataAccess

しかし、受け入れられた回答が参照しているドキュメントを確認したところ、回答者が書いたことを示唆するステートメントが見つかりませんでした.EF Oracle.ManagedDataAccess6.

そして、EF 6 で使用する際に起こりうる問題を解決するためのかなりの数のトリックを含むこのドキュメントを見つけました。Oracle.ManagedDataAccess

私にとって特にうまくいくのは、次を追加することです。

  1. 構成セクション
    <configSections>
      <section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    </configSections>
  1. 従属アセンブリ

    <dependentAssembly>
      <publisherPolicy apply="no" />
      <assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" />
      <bindingRedirect oldVersion="4.121.0.0 - 4.65535.65535.65535" newVersion="4.121.2.0" />
    </dependentAssembly>
    

    (私はOracle.ManagedDataAccessバージョン 4.121.2.0 を使用しました)

  2. Entity Framework プロバイダー

    <provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    

Web.configファイル内のすべて

于 2016-02-15T06:49:13.837 に答える