5

さて、ASP.net mvcを使用するWebサイトがあります。私が抱えている問題は、EntityFrameworkにあります。すべての参照を追加してローカルマシンで実行しましたが、公開すると次のエラーが発生します。

System.InvalidOperationException:EntityFrameworkプロバイダータイプ'System.Data.Entity.SqlServer.SqlProviderServices、EntityFramework.SqlServer、Version = 6.0.0.0、Culture = neutral、PublicKeyToken = b77a5c561934e089' for'System.Data.SqlClient' ADO.NETプロバイダーを読み込めませんでした。実行中のアプリケーションでプロバイダーアセンブリが使用可能であることを確認してください。詳細については、http: //go.microsoft.com/fwlink/?LinkId=260882を参照してください。

参照を再確認し、EntityFramework.SqlServerとSystem.Dataの両方をプロジェクトに追加しました。データベースに接続し、サービスが提供することを宣言するために使用する接続文字列は次のとおりです。

<connectionStrings>
<add name="[dataConnection]" connectionString="Data Source=[ip of host machine];Database=[name];UID=[user];pwd=*******;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
  </connectionStrings>

名前データベースの名前だけがあります。これは私のweb.debug.configでも使用されています。

<connectionStrings>
<add name="[dataconnection]"
  connectionString="Data Source=.;Database=[name];UID=[user];pwd=*******;MultipleActiveResultSets=True;"
  xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>

私はこのすべてにかなり慣れておらず、他の誰かのコードを渡されたばかりなので、フローについて学習しようとしています。これは私の最初の出会いなので、どんな方向でもいただければ幸いです。

4

2 に答える 2

7

統合テストアセンブリでも同じ問題が発生し(これにはms Visual Studioユニットテストフレームワークを使用しています)、.testsettingsファイルの展開アイテムにEFアセンブリを追加することで解決しました。

  1. PackageManagerConsoleを使用してEF6alphaをインストールしました:Install-Package EntityFramework -Pre

これが私の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" />
      </configSections>
      <entityFramework>
        <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
      </entityFramework>
    </configuration>

私の接続文字列(コードで設定しています):server=.\SIN;initial catalog=IntegrationTests;User ID=user;Password=pass;MultipleActiveResultSets=true;

  1. EFアセンブリ参照プロパティを調べて、「ローカルコピー」=Trueに設定されているかどうかを確認しました。そして最後に、TestResults /../ Outフォルダーをチェックアウトし、そこにEntityFramework.SqlServerアセンブリがないことを確認しました(SqlProviderServicesクラスがそこにあります)。

  2. 両方のEF6アセンブリを展開アイテムに追加したところ、すべて問題ありません。 展開アイテム

EntityFramework.SqlServerアセンブリをWebサーバーディレクトリにコピーして、機能するかどうかを確認できます。

多分このリンクは役に立つかもしれません

PS:

GACからの参照を使用するため、System.Data.Entityへの参照がないことを確認してください。Nugetを使用してインストールする場合、EF6AlphaアセンブリはGACにインストールされません。ターゲットフレームワークは.NET4.5である必要があります。

英語が下手でごめんなさい。

于 2012-12-08T03:03:34.493 に答える
0

質問:どのEFバージョンですか?

IISプールの.NETバージョンを確認してください...公開されたプロジェクトの.NETバージョンを指している必要があります...EFのアセンブリは、Windowsディレクトリ(別名GAC)の下の.NETFrameworkフォルダーにある必要があります。

于 2012-12-04T21:07:28.933 に答える