2012-12-04 29 views
5

これで、ASP.net mvcを使用するWebサイトがあるので、Entity Frameworkに問題があります。私はすべての参照を追加し、私のローカルマシンで実行するようにしましたが、私がそれを公開すると、私は次のエラーを受け取ります。Entity Frameworkはローカルサーバーでは動作しますがリモートでは動作しません

のSystem.InvalidOperationException:Entity Frameworkのプロバイダタイプ 'System.Data.Entity.SqlServer.SqlProviderServices、EntityFramework.SqlServer、バージョン= 6.0.0.0、文化=中立、なPublicKeyToken = b77a5c561934e089'「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> 

私はこの全体のものにかなり新しいですし、ちょうどよそ誰かを手渡しました。私はその流れについて学びたいと思っています。これが私の最初の遭遇であり、どんな方向性も認められるでしょう。

答えて

7

私は統合テストアセンブリで同じ問題を抱えていました(これはms Visual Studioユニットテストフレームワークを使用しています).testsettingsファイルの配備アイテムにEFアセンブリを追加することで解決しました。私が使用してパッケージマネージャコンソールを使用して、EF 6アルファをインストールした

  1. : インストール・パッケージ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> 

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

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

  2. だから私はちょうど私の展開アイテムに両方のEF 6つのアセンブリを追加しましたし、今ではすべてがあなたがどうかを確認するために、WebサーバーのディレクトリにEntityFramework.SqlServerアセンブリをコピーしようとすることができますdeployment items

okですできます。

たぶんthis linkは役に立ち

P.することができS:

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

私の悪い英語のために申し訳ありません。

+0

これは私のために働いた、私は自分のサイトを公開しようとしたときにEntityFrameworkSqlServer.dllが見つからなかったと思います。 – Ken

0

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

IISプールの.NETバージョンを確認してください...公開されているプロジェクトの.NETバージョンを指しているはずです... EFのアセンブリは、Windowsディレクトリ(AKA GAC)

+0

私が今使っているバージョンは6.0.0.0です。これはEntityFrameworkとEntityFramework.SqlServerの両方のためです。 – Ken

+0

EF 6.0はありません - 私が知る限り... IIS 6はあります。あなたのプロジェクトを実行するIISプールを見てください。 IIS 6のデフォルトは.NET 2.0を実行することです。これはおそらくEFアセンブリのバージョンが認識されない理由です。 – lionheart

+0

実行されている.net Frameworkバージョンはバージョン4.0です。 EFフレームワークは実際には6.0アルファ-1です。それは私が理解しているものからVisual Studio 2012でリリースされました。私がこの情報で間違っていると私に知らせてください。私が言ったことのすべてが真実であっても、.net 4.0とIIS7との間に矛盾はありますか? (IIS7はサーバーが実行しているものです)。また、ページ自体を実行することができます、私はDBを使用しようとすると、そのエラーを表示します。私が試してログインするときの意味 – Ken

関連する問題