不変の名前「System.Data.SqlClient」を持つADO.NETプロバイダーのEntity Frameworkプロバイダーが見つかりません


543

nugetでEF6をダウンロードしてプロジェクトを実行しようとすると、次のエラーが返されます。

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

ここに画像の説明を入力してください


私はなしでEF5を使用providersし、providerそれを削除することを検討し、スタッフ?
ta.speot.is 2013

1
ここに接続文字列のコピーを入れてください
pylover 2013

接続文字列は画像(App.confing)にありますが、ちなみに非常に単純ですpublic BaseStorage(): base ("RaptorDB") {}。BaseStorage()はEF5のDbContextを継承し、EF6ではまだ完全に機能しています。
Fernando Vellozo 2013

10
問題は2番目のプロジェクト(コンソール)であるEF6をインストールすることによって解決されます。
Fernando Vellozo 2013

3
私にとっては、これはVisual StudioがEntityFramework.SqlServerアセンブリが実際にベースプロジェクトで使用されていることを認識していないことが原因であるように思われました。@Carraの回答のようなことを行う場合、ベースプロジェクトを参照する各プロジェクトにEFを追加する必要はありません。
tehDorf 2016年

回答:


608

NuGet Package Managerからのインストールがプロジェクトに正しくインストールされていませんが、同じ問題が発生し、EntityFrameworkのように見えます。

パッケージマネージャーコンソールで次のコマンドを実行して、なんとか修正しました。

PM> Install-Package EntityFramework

34
PMCは、「EntityFramework 6.0.1」はすでにインストールされていると書きましたが、コンソールアプリ(実際にはEFを使用していません)に追加しましたが、私にとっても同様です。IIコンソールアプリの参照からEFを削除し、エラーが返されます。これは取得できません-コンソールアプリはリポジトリプロジェクト(EFを使用)を使用しています。ありがとうございます。
Prokurors 2013年

33
ソリューションに複数のプロジェクトがある場合は、コマンドラインに-ProjectName <ProjectName>を追加することを忘れないでください... !!!
EugenioMiró2013年

1
-Preオプションtell nugetを使用して、プレリリースパッケージをインストールします。使用はお勧めしません。同様のエラーがありますが、解決策はホストプロジェクトにEntityFrameworkをインストールすることでした。私はそれをクラスライブラリにインストールしましたが、メインプロジェクト(web / console /またはその他)にはインストールしませんでした
Davide Icardi 2013年

10
ここでも同じ問題。EFへの参照を持たないプロジェクトがありましたが、EF dllはデバッグフォルダーにありました。EntityFramework.SqlServer.dllDebugフォルダーに追加されたこのプロジェクトに対してこのコマンドを実行すると、問題は解決しました。
qujck

4
私の状況では、プロジェクトをテストサーバーに展開するまで、このエラーは発生しませんでした。実際、EntityFramework.SqlServer.dllが見つからず、パッケージマネージャーを介してEFをインストールすることができました。2つの関連する参照をプロジェクトに追加し、entityFramework設定をweb.configに追加しました。ローカルIISはローカルでアセンブリを調達できたと思いますが、Webサーバー上の完全なIISは権限が原因でできなかったのでしょうか。
2015年

384

EFをクラスライブラリプロジェクトに追加しました。また、それを参照するプロジェクト(コンソールアプリ、Webサイトなど)に追加する必要があります。


247
これはまったくとんでもない答えです。なぜ私はそれをする必要があるのですか?そして、あなたはさらにもっとばかげていることを知っていますか?できます。
Robert

19
以下の私の答えを参照してください。コンソールアプリケーションにEFをインストールする必要はありません。
Francisco Goldenstein 14

7
正解です。EFのライブラリを使用するフロントエンドプロジェクトに参照EntityFramework.SqlServer.dllのみを追加し、問題を修正します。したがって、このEF(DLLのみ)を使用しないでください
Harveyt

31
コンソール/ WebアプリでEFへの参照追加する必要はありません。EntityFramework.SqlServer.dllbinディレクトリにコピーされていることを確認する必要があるだけです。強力な参照を追加すると、アーキテクチャが壊れる可能性があります(複数の層を構築した場合、最上位の実行アセンブリはEFについてさえ知らないはずです)。代わりに、SQL Serverプロバイダーを確実にコピーすることができます。たとえば、stackoverflow.com
a / 19130718/870604

3
EntityFramework.SqlServer.dllが依存関係として検出されない理由は、Entity Frameworkが動的に読み込むためです。プロジェクトへの参照が構成ファイルにある場合、プロジェクトはどのようにしてSQLプロバイダーをコピーすることを知っているはずですか?
Joel McBeth、2015年

209

Entity Frameworkをコンソールアプリケーションにインストールする必要はありません。アセンブリEntityFramework.SqlServer.dllへの参照を追加するだけです。このアセンブリを、Entity Frameworkを使用するクラスライブラリプロジェクトからLIBフォルダーにコピーして、参照を追加できます。

要約すれば:

  • クラスライブラリアプリケーション:
    • Entity Frameworkをインストールする
    • データレイヤーコードを書く
    • app.configファイルには、接続文字列を除いて、Entity Frameworkに関連するすべての構成が含まれています。
  • コンソール、Web、またはデスクトップアプリケーションを作成します。
    • 最初のプロジェクトへの参照を追加します。
    • EntityFramework.SqlServer.dllへの参照を追加します。
    • app.config / web.configには接続文字列があります(構成エントリの名前はDbContextクラスの名前と同じでなければならないことに注意してください。

お役に立てば幸いです。


18
正解。EFをインストールする必要はありません。EntityFramework.SqlServer.dll。
Tom Stickel 2014

15
同意する必要があります。これは完全に正しい答えです。1/2 mbであるdllを参照するか、5.5 mbを超えるEF nugetプロジェクトをプルします。マルチティアを設計する価値を少し減らします。MSからの貧弱なショー:本当に4つのティアがあり、私のトップティアはEFについて何かを知る理由がまったくないはずです
72GM

18
とにかくとんでもない。たとえば、フロントエンドがSqlServerへの参照を必要とするのはなぜですか?私の場合、フロントエンドはそれほど気にできませんでした。しかし、それは機能します。+1
Mike de Klerk

2
これは役に立ちました。どうもありがとう。
peter_the_oak

1
これにより、EntityFrameworkのバージョンの更新が難しくなりますか?DLLへの参照を更新することを忘れないようにする必要があります
2017年

114

「EntityFramework.SqlServer.dll」含めるのを忘れた場合にも、このメッセージが表示されます

EF6で新しく追加されたファイルのようです。最初はマージモジュールに含まれていなかったため、ここにリストされている問題に遭遇しました。


7
以前にプロジェクト(a)への参照(b)がEFへの参照を持っていたときに、この問題に遭遇しました。プロジェクト(a)のbinフォルダーをクリーン&削除してから再構築した後、EF参照は検出されましたが、EF.SqlServer.dllは検出されませんでした。これを手動でコピーするとうまく
いき

2
@dan richardson「binフォルダーの削除」について言及してくれてありがとう。
Rajshekar Reddy

EF6アップグレード後にLINQPadスクリプトを実行しようとすると、エラーが発生しました。LINQPadでEntityFramework.SqlServer.dllを参照しても、VS2013でソリューションを再構築するまでは修正されませんでした。新しい参照はLINQPadで適切に解決され、スクリプトが実行されました!
クリス

私の場合、開発環境には問題ありませんでしたが、公開したときに、参照されている問題が表示されました。devのライブラリーのリストをサーバーのbinフォルダーと比較した後、EntityFramework.SqlServer.dllがないことに気付いたので、それをアップロードしてアプリを更新し、修正しました。
ヘンリーロドリゲス

これは私にとって問題でした、ありがとう!必要なすべてのプロジェクトにDLLを含めることを忘れる問題を回避するには、@ Andersによるクリーンソリューションを参照してください。
SharpC

54

EntityFramework.SqlServerをホストプロジェクトに追加する代わりに、次のようにモデル/エンティティプロジェクトからプロジェクトへの静的参照を確保できます。

static MyContext()
{
    var type = typeof(System.Data.Entity.SqlServer.SqlProviderServices);
    if(type == null)
        throw new Exception("Do not remove, ensures static reference to System.Data.Entity.SqlServer");
}

これにより、ビルドプロセスにホストプロジェクトとのアセンブリが含まれます。

私のブログの詳細 http://andersmalmgren.com/2014/08/20/implicit-dependencies-and-copy-local-fails-to-copy/


5
これは、永続性にとらわれないはずのプロジェクトに永続性関連のDLLへの参照を含める必要がない、すてきなクリーンソリューションだと思います。
JTech

3
同意し、永続化だけでなく暗黙的な依存関係を持つすべてのライブラリに適用される
Anders

3
アセンブリの型に明示的な依存関係がある場合は、ビルドプロセスによってコピーされます。ただし、ここでは明示的な依存関係はなく、ビルドプロセスはアセンブリをビルドフォルダーにコピーできません。私のコードでは、上記のアセンブリに任意の型への明示的な参照が存在することを確認しています。
アンデルス

2
これがないと、コードからのアセンブリへの明示的な依存関係はなく、出力にコピーされません
Anders

2
これは素晴らしいです。
クリス

48

Entity Framework 6からをインストールする場合Nuget。EntityFramework.SqlServerが別の実行可能ファイルに失敗することがある。Nugetそのプロジェクトにパッケージを追加するだけです。

上記はテストプロジェクトでは機能しない場合があります

テストプロジェクトでこの問題を解決するには、このメソッドをテストプロジェクト内に配置します。

public void FixEfProviderServicesProblem()
{
    var instance = System.Data.Entity.SqlServer.SqlProviderServices.Instance;
}

このメソッドが呼び出されることはありませんが、私の見解として、コンパイラーはすべての「不要な」アセンブリーを削除しEntityFramework.SqlServer、テストが失敗したものを使用しません。


2
まあ、これはきれいではありませんが、テストプロジェクトで私が抱えていた問題は修正されました。他のソリューションはどれも機能しませんでした。
佳作チョウ

私の場合、「ソリューションのNugetパケットの管理」のテストプロジェクトにもEntity Frameworkを追加するだけで十分でした
JuhaPalomäki14年

実際には、System.Data.Entity.SqlServerがコンパイル後に "results lib set"に含まれることを保証するために(テストだけでなく)プロジェクトに配置する必要があります(注:Unityまたは他のIoCツールがこのルールを変更し、テストプロジェクトからこのコードを呼び出す必要があります)。
Roman Pokrovskij 2015年

プロジェクト内のどこにでもエンティティフレームワークの参照をスプレーする必要がないため、これが実際に最適なソリューションです。
ダニエルロボ2017

これは私に正しい方向を示しました。EntityFramework.SqlServerあなたのクラスライブラリに追加されますが、使用されていない場合、それはあなたのアプリケーションの出力フォルダ内に置かれることはありません。私ExecutionStrategyはまだ追加する必要があるを追加することで問題を修正しました。そのためSetExecutionStrategy("System.Data.SqlClient", () => new SqlAzureExecutionStrategy());DbConfigurationクラス内のように行を追加すると問題が修正されました。
Jan_V

24

この機能を追加

private void FixEfProviderServicesProblem()

ライブラリクラスのデータベースコンテキストクラスと欠落しているDLL EntityFramework.SqlServer.dllが正しい場所にコピーされます。

namespace a.b.c
{
    using System.Data.Entity;

    public partial class WorkflowDBContext : DbContext
    {
        public WorkflowDBContext()
            : base("name=WorkflowDBConnStr")
        {
        }

        public virtual DbSet<WorkflowDefinition> WorkflowDefinitions { get; set; }
        public virtual DbSet<WorkflowInstance> WorkflowInstances { get; set; }
        public virtual DbSet<EngineAlert> EngineAlerts { get; set; }
        public virtual DbSet<AsyncWaitItem> AsyncWaitItems { get; set; }
        public virtual DbSet<TaskItem> TaskItems { get; set; }
        public virtual DbSet<TaskItemLink> TaskItemLinks { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
        }

        private void FixEfProviderServicesProblem()
        {
            // The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer'
            // for the 'System.Data.SqlClient' ADO.NET provider could not be loaded. 
            // Make sure the provider assembly is available to the running application. 
            // See http://go.microsoft.com/fwlink/?LinkId=260882 for more information.
            var instance = System.Data.Entity.SqlServer.SqlProviderServices.Instance;
        }
    }
}


申し訳ありませんが、取り消そうとしました...うまくいくとは思わなかったので...そして実際にそうです!...回答を編集しない限り、投票を変更できないと表示されています。ロックされています...
Seabizkit 2016年

これも私にとってはうまくいきました。EF 6を使用するライブラリプロジェクトと、ライブラリを使用するコンソールアプリケーションがあります。OPと同じ例外が発生しました。EntityFramework固有の構成をアプリケーション構成ファイルに配置したくないので、この方法でうまくいきました。ありがとう
ロブ

1
あなたはどこを呼んでくださいFixEfProviderServicesProblem、私は運と、コンストラクタで試してみました。
Francis Ducharme 2017年

1
私はそれを決して呼ばない-する必要はありません。そこにあるという事実は、.netにその必要性を考えさせ、依存関係としてEntityFramworkを含めます。
ヨハネス

おそらくstackoverflow.com/a/19130718/1467396からですか?しかし、+ 1、とにかくそれをどのように/どこで使用するかを明確にするためです。
David

20

これらのどれも私にとってはうまくいきませんでした。私は別のスタックオーバーフローの質問で解決策を見つけました。簡単に参照できるように、ここに追加します。

参照を作成する必要があるため、アプリケーションパスにコピーされます。後で実行時に参照されるためです。したがって、ファイルをコピーする必要はありません。

private volatile Type _dependency;

public MyClass()
{
    _dependency = typeof(System.Data.Entity.SqlServer.SqlProviderServices);
}

2
この!このアセンブリを参照する可能性のある他のプロジェクトへの参照を追加する必要はありません。
tehDorf

8

SQL Server Compact 4.0でEntity Framework 6を​​使用しているときにも同じエラーが発生しました。Entity Framework Providers for EF6 に関するMSDNの記事は役に立ちました。パッケージマネージャーコンソールでそれぞれのプロバイダーコマンドをnugetパッケージとして実行すると、問題が解決する場合があります。また、NuGetパッケージは、構成ファイルに登録を自動的に追加します。私はPM> Install-Package EntityFramework.SqlServerCompact問題を解決するために走りました。


2
これまで誰も投票していないことに本当に驚いています!エラーメッセージは明確に述べています。エラーの理由は、EFのアップグレード後、アプリケーションのweb.configファイルにSQL Compactのプロバイダー定義が実際に残っていないことです。言及したパッケージを追加すると、web.configファイルが修正され、プロバイダーが定義されます。
Csaba Toth 2014年

1
単にライフセーバー。問題の解決策を明確に提供しているので、回答としてマークする必要があります
ZafarYousafi 2014

7

それぞれが異なるプロジェクトのWebサービスのセット、およびそれらのサービスのいくつかの統合テストを含む個別のプロジェクトで作業しているときに、今日この問題に遭遇しました。

統合テストプロジェクトからのEFへの参照を含める必要なしに、EF5でこのセットアップをしばらく使用してきました。

今、EF6へのアップグレード後、統合テストプロジェクトでEF6への参照を含める必要があるように見えますが、そこでは使用されていません(かなりuser3004275で指摘したとおり)。

同じ問題に直面している兆候:

  • EF6への参照を持つプロジェクトから開始されている限り、EFへの直接の呼び出し(DBへの接続、データの取得など)は正常に機能します。
  • 公開されたサービスインターフェイスを介したサービスの呼び出しは正常に機能します。つまり、サービスに「内部で」欠落している参照はありません。
  • サービス外のプロジェクトからサービスプロジェクトのパブリックメソッド直接呼び出すと、EFがそのプロジェクト自体で使用されていなくても、このエラーが発生します。呼び出されたプロジェクトの内部でのみ

3番目のポイントは、しばらく私を失望させたものであり、なぜこれが必要なのかはまだわかりません。統合テストプロジェクトでEF6に参照を追加すると、どのような場合でも解決されます...


7

テストプロジェクトでエラーが発生した場合の最も良い解決策は、テストクラスを次のように装飾することです。

[DeploymentItem("EntityFramework.SqlServer.dll")]

それは確かにかなりですが、より多くの作業を生成し、忘れやすいです。「強制参照」のトリックでは、EFを実際に使用する必要のあるプロジェクトでのみ実行する必要があります。
Charles Roberto Canato

7

Entity Frameworkが使用されているプロジェクトを参照するスタートアッププロジェクトでは、binフォルダーに次の2つのアセンブリが必要です。

  • EntityFramework.dll
  • EntityFramework.SqlServer.dll

スタートアッププロジェクトの.configファイルのにを追加する<section>と、<configSections>そのbinディレクトリで最初のアセンブリを使用できるようになります。これは、Entity Frameworkプロジェクトの.configファイルからコピーできます。

<configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>

2番目の.dllをbinフォルダーで使用できるようにするには、実用的ではありませんが、Entity Frameworkプロジェクトのbinフォルダーから手動でコピーを作成できます。より良い代替策は、Entity Frameworkプロジェクトのビルド後のイベントに次の行を追加することです。これにより、プロセスが自動化されます。

cd $(ProjectDir)
xcopy /y bin\Debug\EntityFramework.SqlServer.dll ..\{PATH_TO_THE_PROJECT_THAT_NEEDS_THE_DLL}\bin\Debug\

2
おかげで、私はデータレイヤーにエンティティフレームワークを持っているので隔離されていますが、マイクロソフトがデータレイヤーを完全に隔離できず、データベーステクノロジーでuxを汚染させるのは残念です。私はそれをする必要がないと思っていました。
Matt

4

今日、この問題に遭遇しました。私は、EF63 NuGetパッケージとテスト用のコンソールアプリケーションを備えたデータリポジトリクラスライブラリを持っています。これらは、クラスライブラリプロジェクトのみを参照しています。EntityFramework.SqlServer.dllをクラスライブラリのBin \ DebugフォルダーからコンソールアプリケーションのBin \ Debugフォルダーにコピーする非常に単純なビルド後のコマンドを作成し、問題を解決しました。entityFrameworkセクションをコンソールアプリケーションの.configファイルに追加することを忘れないでください。


4

以下をapp.configに追加します。

 <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v11.0" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>

あなたはまた、それを登録する必要があります<configSections>-<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
TryingToImprove

これは、「IInstall-Package EntityFramework」が行うことです。EntityFrameworkはデフォルトでSqlClientの不変名のEntityFramework.SqlServer.dllをロードしようとするため、これは実際には必要ありません。このメソッドは、プロバイダーの代わりに使用できます。
user1295211 2017年


3

EntityFramework.SqlServer.dllアセンブリへの静的参照を強制する必要がありますが、ダミーコードを配置する代わりに、より美しい方法でこれを行うことができます。

  1. DbConfigurationクラスが既にある場合:

    public class MyConfiguration : DbConfiguration
    {
        public MyConfiguration()
        {
            this.SetProviderServices(System.Data.Entity.SqlServer.SqlProviderServices.ProviderInvariantName, System.Data.Entity.SqlServer.SqlProviderServices.Instance);
        }
    }
  2. あなたが持っていない場合はDbConfigurationのクラスを(EFが使用される前に)あなたは、アプリの起動時に以下のコードを配置する必要があります。

    static MyContext()
    {
        DbConfiguration.Loaded += (sender, e) =>
            e.ReplaceService<DbProviderServices>((s, k) => System.Data.Entity.SqlServer.SqlProviderServices.Instance);
    }

2

Nugetを使用してEntity Frameworkを再インストールしました。そして、以下のリンクに書かれている指示に従ってください:http : //robsneuron.blogspot.in/2013/11/entity-framework-upgrade-to-6.html

問題は解決すると思います。


説明がいいと思います!あなたが持っているなぜそれを再インストールなど
Rizier123

1
不明な理由により変更が有効にならないため、EntityFramework 6.1.1を再インストールし、その後有効にしました。
Kuntal Ghosh 14

2

YourModel.edmxファイルを展開し、YourModel.Context.ttの下にあるYourModel.Context.csクラスを開きます。

usingセクションに次の行を追加し、エラーを修正しました。

SqlProviderServices = System.Data.Entity.SqlServer.SqlProviderServices;を使用します。

ファイルが自動生成されるたびに、この行をファイルに追加する必要がある場合があります。


2

私にも同様の問題がありました。私の問題は次のようにして解決しました:

ここに画像の説明を入力してください

ここに画像の説明を入力してください


2

System.Data.SqlClientがシステムにインストールされているかどうか、およびシステムへの参照が行われているかどうかを最初に確認することについて誰も言及しなかったようです。

System.Data.SqlClientをインストールし、app.Configに新しいプロバイダーを追加することで問題を解決しました

<provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6"/>

1

また、起動プロジェクトがdbcontext(または関連するapp.config)を含むプロジェクトであることを確認してください。鉱山は、必要なすべての構成設定を持たないウェブサイトプロジェクトを立ち上げようとしていました。


1

上記のほとんどすべてを試しましたが、何もうまくいきませんでした。

私はデフォルトのプロジェクトで参照DLLを設定した場合のみEntityFrameworkEntityFramework.SqlServerプロパティCopy LocalにするTrueには、作業を開始でした!


1

EntityFramework.dllとEntityFramework.SqlServer.dllの2つのdllがDataAccessレイヤーライブラリであることに注意してください。これらをビューや他のレイヤーで使用することは論理的ではありません。問題は解決されますが、論理的ではありません。

論理的な方法は、enitiess属性を削除してFluent APIで置き換えることです。これは実際のソリューションです


1

コンソールアプリケーションとクラスライブラリが1つありました。クラスライブラリでエンティティデータモデルを作成し(クラスライブラリを右クリックして[追加]> [新しい項目]> [データ]> [ADO.NETエンティティデータモデル6.0])、コンソールアプリケーション内に参照を配置しました。したがって、クラスライブラリへの参照を持つコンソールアプリケーションがあり、クラスライブラリ内にはEFモデルがあります。テーブルからレコードを取得しようとしたときにも同じエラーが発生しました。

次の手順に従ってこの問題を解決しました:

  1. ソリューションを右クリックして、[ソリューションのNuGetパッケージの管理]オプションを選択すると、NuGetパッケージマネージャーウィンドウが表示されます。
  2. [インストールされたパッケージ]の下の[管理]オプションに移動しますヒント:Entity Frameworkがクラスライブラリに追加されているため、[インストールされたパッケージ]の下にEntityFrameworkがあり、[管理]オプションが表示されます
  3. 「管理」オプションをクリックして、EFモデルを保持するクラスライブラリへの参照があるプロジェクトにパッケージをインストールするためにチェックします(私の場合、チェックボックスを設定して、内部にEFモデルを持つクラスライブラリへの参照があったコンソールアプリにパッケージをインストールします)

それが私がしなければならなかったすべてであり、すべてが完璧に働いた。

お役に立てば幸いです。


1

同じエラーがあります。dbContextを使用してモデルのいずれかにクエリを実行するか、次のようなリストを取得する場合にのみ発生するのは奇妙です:

var results = _dbContext.MyModel.ToList();

Entity Frameworkを再インストールしようとしましたが、適切に参照しましたが、役に立ちませんでした。

幸い、私たちはNugetのALLソリューションを確認し、すべてを更新するかeverything、同じバージョンであることを確認しようとしました。これは、2つのプロジェクトのWebプロジェクトでEFバージョンが異なることに気付いたためです。そしてそれは機能します。エラーはなくなりました。

以下は、すべてのソリューションでNugetを管理する方法のスクリーンショットです。

ここに画像の説明を入力してください


1

EntityFramework.SqlServer.dllへの参照がありません。SQL Serverを使用するEntityFrameworkプロジェクトの場合、参照する必要がある2つのファイルはEntityFramework.SqlServer.dllとEntityFramework.dllです。


0

CEデータベースからAzure上のSQL Serverに移行するときに関連する問題がありました。これを解決するために4時間を無駄にしただけです。うまくいけば、これは誰かに同様の運命を救うかもしれない。私にとっては、packages.configファイルにSqlCEへの参照がありました。それを削除すると問題全体が解決し、移行を使用できるようになりました。不必要に複雑なセットアップと構成の問題を抱える別の技術者のために、マイクロソフトをご利用ください。



0

同じ例外がスローされました。含めた

using System.Data; 
using System.Data.Entity;

そして、すべてが再び動作するように戻っています。


0

メッセージが示すように、プロバイダーSystem.Data.SqlClientを追加する必要があるため、2つのDLLを持つEntityFrameworkのnugetパッケージをインストールする必要がありますが、コンソールアプリケーションのみを開発している場合は、EntityFramework.SqlServer.dllの参照を追加するだけです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.