Entity Framework Providerタイプをロードできませんでしたか?


420

現在マシンにインストールされているTeamCityでテストを実行しようとしています。

System.InvalidOperationException

Entity Frameworkプロバイダータイプ ' System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServerVersion=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'' System.Data.SqlClient'のADO.NETプロバイダーを読み込めませんでした。実行中のアプリケーションがプロバイダーアセンブリを使用できることを確認してください。

詳細については、http://go.microsoft.com/fwlink/?LinkId = 260882を参照してください

System.Data.EntitycodeplexでEF6へのアップグレードについて提案されたように、私はどのプロジェクトでも参照していません。

したがって、なぜこの例外が発生するのかわかりません。VSからテストを実行しても、このような例外は発生しません。

私はCopyLocalをfalseに設定してから、もう一度trueに設定しようとしましたが、それも機能しないようです。

更新

私の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" />
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
  </configSections>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
  </entityFramework>
</configuration>

teamcityで次のスタックトレースを取得します。

[MSTest] IntegrationTests.CrudTest+QuestionTest.Create
[03:59:11][IntegrationTests.CrudTest+QuestionTest.Create] Initialization method IntegrationTests.CrudTest+QuestionTest.Initialize threw exception. System.InvalidOperationException: System.InvalidOperationException: The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' 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..
[03:59:11]
[IntegrationTests.CrudTest+QuestionTest.Create]     at System.Data.Entity.Config.ProviderServicesFactory.GetInstance(String providerTypeName, String providerInvariantName)
   at System.Data.Entity.Config.ProviderServicesFactory.GetInstanceByConvention(String providerInvariantName)
   at System.Data.Entity.Config.DefaultProviderServicesResolver.GetService(Type type, Object key)
   at System.Data.Entity.Config.CachingDependencyResolver.<>c__DisplayClass1.<GetService>b__0(Tuple`2 k)
   at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
   at System.Data.Entity.Config.CachingDependencyResolver.GetService(Type type, Object key)
   at System.Data.Entity.Config.ResolverChain.<>c__DisplayClass3.<GetService>b__0(IDbDependencyResolver r)
   at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
   at System.Data.Entity.Config.ResolverChain.GetService(Type type, Object key)
   at System.Data.Entity.Config.RootDependencyResolver.GetService(Type type, Object key)
   at System.Data.Entity.Config.ResolverChain.<>c__DisplayClass3.<GetService>b__0(IDbDependencyResolver r)
   at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
   at System.Data.Entity.Config.ResolverChain.GetService(Type type, Object key)
   at System.Data.Entity.Config.CompositeResolver`2.GetService(Type type, Object key)
   at System.Data.Entity.Config.IDbDependencyResolverExtensions.GetService[T](IDbDependencyResolver resolver, Object key)
   at System.Data.Entity.Config.InternalConfiguration.GetService[TService](Object key)
   at System.Data.Entity.Config.DbConfiguration.GetService[TService](Object key)
   at System.Data.Entity.Utilities.DbProviderFactoryExtensions.GetProviderServices(DbProviderFactory factory)
   at System.Data.Entity.Infrastructure.DefaultManifestTokenService.GetProviderManifestToken(DbConnection connection)
   at System.Data.Entity.Utilities.DbConnectionExtensions.GetProviderInfo(DbConnection connection, DbProviderManifest& providerManifest)
   at System.Data.Entity.DbModelBuilder.Build(DbConnection providerConnection)
   at System.Data.Entity.Internal.LazyInternalContext.CreateModel(LazyInternalContext internalContext)
   at System.Data.Entity.Internal.RetryLazy`2.GetValue(TInput input)
   at System.Data.Entity.Internal.LazyInternalContext.InitializeContext()
   at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
   at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize()
   at System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext()
   at System.Data.Entity.Internal.Linq.InternalSet`1.ActOnSet(Action action, EntityState newState, Object entity, String methodName)
   at System.Data.Entity.Internal.Linq.InternalSet`1.Add(Object entity)
   at System.Data.Entity.DbSet`1.Add(TEntity entity)
   at EFRepository.Infrastructure.EFRepository`1.Add(T item) in c:\TeamCity\buildAgent\work\da2ea4e72c0e77f0\Repository\Infrastructure\EFRepository.cs:line 22
   at IntegrationTests.CrudTest.Initialize() in c:\TeamCity\buildAgent\work\da2ea4e72c0e77f0\IntegrationTests\CrudTest.cs:line 34

1
EntityFramework.SqlServer.dllはEntityFramework.dllと共に展開されますか?EF6では、SqlServerおよびSqlServerCEプロバイダーは、以前のバージョンとは異なり、EFエンジンと同じアセンブリにありません。System.Data.Entity.dllへの参照を追加しないでください。EF5と比較してEF6のプロバイダーモデルが変更され、EF5プロバイダーは機能しません。さらに、いくつかのトリッキーな問題(EF6でエンティティタイプとして扱われるEF5地理空間タイプなど)をヒットする可能性があります
Pawel

はい、System.Data.Entityへの参照がないこと、およびEntityFramework.dllとEntityFramework.SqlServer.dllの両方への参照が存在することを再確認しました。再びprojetcがコンパイルされ、テストがVSで実行されます。エラーが発生するのは、TeamCityでテストを実行したときだけです。
ashutosh raina

これは正しい設定です。私はTeamCityを使用していませんが、TeamCityでテストを実行するためにアプリをデプロイすると、EntityFramework.SqlServer.dllが見つからないため、例外が発生するようです。
Pawel

1
この投稿からの回答を参照してください:stackoverflow.com/questions/21175713/…私はprivate volatile Type _dependency...回答を追加し、うまくいきました!TeamCityでEFを機能させるために、このような別のクラスを追加しなければならないのは単に悪臭を放つだけです。
a11smiles 2016年

2
EntityFrameworkをnugetパッケージからアンインストールして再度インストールしましたが、修正されました
abhyudayasrinet

回答:


426

同じ問題ですが、Nugetを介してEF 6をインストールしました。EntityFramework.SqlServerが別の実行可能ファイルで見つかりませんでした。そのプロジェクトにnugetパッケージを追加しただけです。


108
私もこれに気づきました。EFを使用するライブラリを作成すると、VSはEF.dllとEF.SqlServer.dllをそのビルドフォルダーに配置します。ただし、ライブラリを使用する別のプログラムがある場合、EF.dllのみがこのビルドフォルダーに配置されます。EF.SqlServer.dllが見つかりません。手動でビルドフォルダーに追加すると、プログラムは機能します。それ自体は良い解決策ではありませんが、EF.SQLServer.dllがエラーの原因であることが問題の原因であることを示しています。
エリック

44
var x = typeof(System.Data.Entity.SqlServer.SqlProviderServices);を追加しました。その後、私のアプリは機能しました
Brian

33
絶対に何もしないコードを入力するときはいつも心配しています。突然プロジェクトが実行されます。O_o
ヨルダン

10
また、コンパイラの最適化のために、実行x.ToString()することもできます。そうしないとtypeof、リリースのが削除されます。
ジョーダン

15
EF 6.1でASPX DLL /プロジェクトにEFをインストールする必要があるのはうっとうしいですが、EF 5.0ではデータレイヤーDLL /プロジェクトでのみ必要です。
PeterX

274

私のテストプロジェクトでも同じ問題が発生しました。NuGetを介して最新のEF6ビットをインストールし、EFに関連する何かを呼び出すたびに、次のように取得しました。

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

私の回避策:このメソッドをテストプロジェクト内に配置しました。

public 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;
}

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

とにかく:私のマシンで動作します;)

注:メソッドをテストプロジェクトに追加する代わりに、モデル/エンティティプロジェクトからSqlProviderServicesへの静的参照を確保できます


24
私は同じことをしてしまいました。このアセンブリをdbへの接続を開くことへの依存関係にしたその人に話したいと思います。代替ユニバースでは、接続文字列を含む構成ファイルを持つすべてのフロントエンドプロジェクトは、この1つのDLLが接続を開くためにEntityFrameworkを参照する必要があります。これはどのような意味で理解できませんか。
juhan_h 2013年

3
これはハックですが、プロジェクト用に作成されたデプロイメントパッケージがないシナリオで私が見つけた最良/最も簡単なソリューションです。

3
「var x = typeof(SqlProviderServices);」のような他の提案を使用しているすべての人のために。Robertが提供するこのソリューションのみが、開発およびビルドマシンで機能します!!!
アレクサンダーシュミット14

3
Robertに感謝します。EFチームによってばかげていますが、とにかくそれは私のために働いています。
Hitesh 2014

7
明確にするために:上記のコードをDbContextクラスに追加すると、EF 6.1の問題が解決します。この方法では、Entity Framework Nugetパッケージをフロントエンド(WebApiなど)プロジェクトに含める必要がなく、EFに関連するすべてのものをデータレイヤーに残すことができます。
Nick

106

Nugetは、EntityFramework.SqlServer.dllを参照するようにEF6プロジェクトを構成します。これはビルド中にEF6プロジェクトの出力フォルダーにデプロイされますが、EF6プロジェクトを参照するプロジェクトの出力フォルダーにはデプロイされません。これは、Visual Studioがアセンブリの何も実際にdllを直接使用していないことを検出できるほど「スマート」であり、それが含まれていないためだと思います。EntityFramework.SqlServer.dllを使用するEF6プロジェクトにコードを追加することで、EF6プロジェクトを参照するプロジェクト(ユニットテスト、UIなど)の出力フォルダーにEntityFramework.SqlServer.dllを強制的に展開できます。生成されたクラスにコードを配置しないように注意してください。次の再生成でコードが失われる可能性があります。次のクラスをアセンブリに追加することを選択したため、問題が修正されました。

using System.Data.Entity.SqlServer;

internal static class MissingDllHack
{
    // Must reference a type in EntityFramework.SqlServer.dll so that this dll will be
    // included in the output folder of referencing projects without requiring a direct 
    // dependency on Entity Framework. See http://stackoverflow.com/a/22315164/1141360.
    private static SqlProviderServices instance = SqlProviderServices.Instance;
}

1
これにより、MSTestに関する問題が解決しました。私のテストクラスでは、クラスの継承に関して面倒なことをする必要がないため、この方法が好きです。テストアセンブリとMAGICのどこかにクラスを含めるだけです。ありがとう!
kbrimington 2015

これが、sqlserver.dllを参照プロジェクトの出力にコピーしない理由です。これは、アプリケーションとコンテキストアセンブリの実行の間にもう1つのレイヤーがある場合に発生します。おかげで私の問題は解決しました。
Bharat

2
4秒間検索したくない場合は、System.Data.Entity.SqlServerを使用します。
TTT

ユニットテストには共通の基本クラスを使用します。すべてのユニットテストはこのクラスから継承します。このメソッドをその1つのクラスに追加することは、基本クラスから継承する単体テストクラスを持つすべてのプロジェクトが正常に機能することを意味します。
MaxJ

3
小さい点ですが、なぜこのクラスにコメントを追加して、なぜ必要なのかを説明するのが最善でしょう。
ジョンダービル2016年

43

私の解決策は、nugetマネージャーを介してプロジェクトからエンティティフレームワークを削除し、再度追加することでした。


9
PM> Update-Package -Reinstall "EntityFramework" -ProjectName "MyProj1"
VahidN 2016年

これは私にとってうまくいきました、そしてそれが最適な解決策かもしれないと思います
ccoutinho

機能するシンプルでクリーンなソリューション。リストではるかに高いはずです
mode777

29

これを解決するには、次のように、DBContextクラスの上にusingステートメントを追加します。

using SqlProviderServices= System.Data.Entity.SqlServer.SqlProviderServices;

1
これは、この問題の最もクリーンな解決策です。ありがとうございました。
Alexandru Dicu

このソリューションは機能し、クリーンに見えます。質問:DBContextクラスが更新される行IDが失われませんか?つまり、edmxクラス生成を使用していますか?
NoloMokgosi 2016

これが必要であるとは信じられず、どういうわけかマイクロソフトによって修正されていません-しかし、これは私にとってはうまくいきました。簡単な解決策をありがとう。
Tsar Bomba

このソリューションは、機能的にはMissingDllHackと同じです。見た目はきれいに見えるかもしれませんが、回避策コードをコンテキストクラスに導入します。このコードは、ReSharperなどのツールによる削除のフラグも付けられ、時間の経過とともに簡単に失われる可能性があります。良い解決策ですが、コードの警告が生成されないように、回避策をコンテキストから切り離しておくことを好みます。
Timothy Schoonover、2016年

20

プロバイダーにはコードベースの登録を使用しました。 リンク1 リンク2

次のような構成クラスを作成しました

class DbContextConfiguration : DbConfiguration
{
    public DbContextConfiguration()
    {
        this.SetDatabaseInitializer(new DropCreateDatabaseAlways<MyDbContext>());
        this.SetProviderServices(SqlProviderServices.ProviderInvariantName, SqlProviderServices.Instance);
    }
}

重要なポイントはthis.SetProviderServices(SqlProviderServices.ProviderInvariantName、SqlProviderServices.Instance);です。

こんな風に使った

[DbConfigurationType(typeof(DbContextConfiguration))]
public class MyDbContext : DbContext
{
    public MyDbContext()
    {
        ...
    }

    public DbSet<...> ...{ get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        ...
    }
}

1つのソリューションに2つのプロジェクトがあります。1つ目は、エンティティフレームワークアセンブリ、DbContextクラス、およびttファイルを含むクラスライブラリです。2番目のプロジェクトは、ef-projectを使用してデータを取得する必要があるWindowsフォームです。@ナッシュ:クラスをどこに(どのプロジェクトに)配置したか詳しく説明してくださいDbContextConfiguration。ありがとう
surfmuggle 2013

上記のように、追加の参照がこれを修正する1つの方法のようです(ericからのコメントを参照)。私はnugetコンソールを使用して、次のコマンドを発行Get-Project MyWinformsProject | Install-Package EntityFrameworkしました。それでも理由を理解したいと思います。
surfmuggle 2013

DbContextConfigurationは既に存在するようです(vs 2013)。MyDbContextクラスの上にDbConfiguraton行を追加しても問題は解決しませんでした。
AndersLindén16年

DbConfigurationクラスは必要ありません。アプリの起動時に(EFを使用する前に)次のコードを配置しますDbConfiguration.Loaded += (sender, e) => e.ReplaceService<DbProviderServices>((s, k) => System.Data.Entity.SqlServer.SqlProviderServices.Instance);
ロズベルグリニャレス2017年

14

アセンブリ初期化クラスの[DeploymentItem]で整理しました

namespace MyTests
{
    /// <summary>
    /// Summary description for AssemblyTestInit
    /// </summary>
    [TestClass]
    [DeploymentItem("EntityFramework.SqlServer.dll")]
    public class AssemblyTestInit
    {
        public AssemblyTestInit()
        {
        }

        private TestContext testContextInstance;

        public TestContext TestContext
        {
            get
            {
                return testContextInstance;
            }
            set
            {
                testContextInstance = value;
            }
        }

        [AssemblyInitialize()]
        public static void DbContextInitialize(TestContext testContext)
        {
            Database.SetInitializer<TestContext>(new TestContextInitializer());
        }
    }
}

9

パーティーには遅れましたが、投票数の多かった回答はすべて私にとってハックのようでした。

私が行ったのは、テストプロジェクトのapp.configから以下を削除することだけです。働いた。

  <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>

本当の解決策!
ベンF

8

EntityFramework.sqlServer.dllへの参照を追加しないため、問題があります。プログラムを開発するとうまくいきます。しかし、アプリを公開してインストールすると、エラーがスローされます。

参照を追加して、もう一度ビルドして公開します。

参考文献


私はこれをしましたそしてそれは働きました。基本的に、ライブラリへのコンポーネントが適切に参照されていない場合、プロジェクトは警告を表示します。
kbvishnu

5

これを手動でメインアプリケーションEntityFramework.SqlServer.dllのにコピーすることで解決しましたbin folder


4

ようやく解決しました。結局のところ、リポジトリクラスにIDIsposableの誤った実装がありました。直した。リソースを適切に破棄していないため、誤った実装により、stackoverflow例外が発生しました。これにより、VSはテストを実行せず、テスト実行エンジンがクラッシュしました。

私はここにマイクロソフトに提出しました(これは正しい解決策を得る前のことです)。connect.microsoft.com/VisualStudio/feedback/details/775868/vs-test-execution-crashes-in-vs-2012#details

とにかく、ビルドはteamcityで正常に実行されます。ただし、VS Test実行エンジンのどちらも、Team Cityではなく、何が起こっているのかを優雅に伝える方法がなかったのはなぜか私はまだ興味があります。

テストを手動でデバッグすることで根本的な原因を発見しました(非常に多くの日を経て初めて気付きましたが、修正には5秒かかりました)。

うまくいけば、これはそのような問題に遭遇した人を助けるでしょう。


4

私は同様の問題を見つけ、この投稿からの方法を使用します:(http://entityframework.codeplex.com/workitem/1590)、これは私の問題を解決します。

この問題を回避するには、テストアセンブリのどこかに次のような行を追加して、テストアセンブリがプロバイダーアセンブリを直接参照するようにします。var _ = System.Data.Entity.SqlServer.SqlProviderServices.Instance;


3

問題を調査したところ、出力フォルダーに次のdllが含まれていないことに気付きました。単純な解決策は、アプリケーションがデバッグモードの場合、Entityframework.dllおよびEntityframework.sqlserver.dllをapp.configと共に出力フォルダーにコピーすることです。同時に、app.configのビルドオプションパラメーター「出力フォルダーにコピー」を常にコピーするように変更しました。これで問題が解決します。


2
「EntityFramework.SqlServer」に対してのみ「Copy Local」をtrueに設定しました。今では動作します。
Alezis

3

EF dllを参照またはブラウザする-EntityFramework.SqlServer.dll


これは私がやったことです。"EntityFramework.SqlServer"への参照を私のライブラリから "実行中"のプロジェクトにコピーしました。うまくいきました!
ホーコンK. Olafsen

3

同じ問題を何度も試しましたが解決しませんでしたが、EntityFramework.SqlServerCompactパッケージをインストールすると、Nugetパッケージマネージャーからこのパッケージがインストールされました。

Install-Package EntityFramework.SqlServerCompact

3

静的な「スタートアップ」ファイルを作成し、この「構成」を分離する方法として、DLLをそのbinフォルダーに強制的にコピーするコードを追加しました。


[DbConfigurationType(typeof(DbContextConfiguration))] public static class Startup { }

public class DbContextConfiguration : DbConfiguration
{
    public DbContextConfiguration()
    {
        // This is needed to force the EntityFramework.SqlServer DLL to be copied to the bin folder
        SetProviderServices(SqlProviderServices.ProviderInvariantName, SqlProviderServices.Instance);
    }
}


1
ありがとう!これは大きな助けとなりました。
Addison Schuhardt

1
私の回答が役に立ちました@AddisonSchuhardt :)
hatsrumandcodeの作成

2

アプリケーションプロジェクトでEFへの参照を必要としないため(または手動で何かをコピーするため)、これをEFプロジェクトのビルド後のイベントに追加しました。

cp $(TargetDir)EntityFramework.SqlServer.dll $(SolutionDir){your-main-bin-folder}

2

これは、私のロード/ユニットテストプロジェクト内でのみ発生します。イライラして、私は2年間実行しているプロジェクトでそれを思いついた。何かを壊すテスト実行の順序であったに違いありません。fiが削除されると、私は推測します。

正しい値を使用する変数を宣言するだけで問題が解決することがわかりました。メソッドを呼び出すことすらありません。定義するだけです。奇妙ですが、動作します。

    /// <summary>
    /// So that the test runner copies dlls not directly referenced by the integration project
    /// </summary>
    private void referenceLibs()
    {
        var useless = SqlProviderServices.Instance;
    }

2

他のすべての提案された解決策を試してもプロジェクトが機能しなくなった後、私はついにこのページに小さなコメントを見つけました:

BINフォルダーを削除すると、

そしてそれは私にとってもうまくいきました。


1
私は2つのブランチをマージしていました-私のプロジェクトにはEFに関連する変更はありませんでしたが、ユニットテストは理由もなく失敗し始めました。BINフォルダーを削除すると、再び機能します。
Arno Peters

@ Zeek2このエラーはトリッキーです。私が引用したページには、この問題を解決するためのさまざまな提案があります。これは、考えられる多くのソリューションの1つにすぎません。特定の問題に当てはまるソリューションと幸運が見つかるまで調査を続けます。
Ulysses Alves

1

Entityframework.dllおよびEntityframework.sqlserver.dllを参照プロジェクトに追加すると、問題が解決しました。


1

ユニットテストプロジェクトのデバッグ出力ウィンドウを確認しました。EntityFramework.SqlServer.dllがロードされませんでした。binフォルダーに追加した後、テストは正常に実行されました。


1

私も同様の問題がありました

私の問題は次のようにして解決しました:

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

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


1

DBContext単体テストプロジェクトのインスタンス化オブジェクトでも同じ問題が発生しました。単体テストプロジェクトパッケージをチェックしたところ、そのEntityFrameworkパッケージがインストールされていないことがわかり、Nugetからインストールして問題を解決しました(EFバグだと思います)。

幸せなコーディング


0

同じエラーメッセージが表示されました。

データアクセス用に別のプロジェクトがあります。Webプロジェクト(データプロジェクトを参照)をローカルで実行しても問題なく動作しました。しかし、アセンブリを紺碧にするためにWebプロジェクトをデプロイしたとき、EntityFramework.SqlServerはコピーされませんでした。Webプロジェクトへの参照を追加して再デプロイしたところ、機能するようになりました。

これが他の人に役立つことを願っています


0

Contoso Universityのチュートリアルをオフラインで作業していて、EFを使用して最初のコントローラーを作成しようとしたときに同じ問題が発生しました。パッケージマネージャーコンソールを使用してnugetキャッシュからEFをロードし、SQL Serverのローカルインスタンスへの接続文字列を作成する必要がありましたが、EFのwebConfig設定がすべて設定されていない可能性がありますが、できました「entityFramework」内の「プロバイダー」セクションを完全に削除して問題を解決するには

ロバート


0

簡単な修正があります。プロジェクトで参照を開き、[System.Data]を右クリックして、[プロパティ]をクリックします。「ローカルのコピー」を「True」に変更します。

問題を修正する必要があります。


0

私の場合、以前にSQL Server Express 2012(x64)をインストールしたときにSQL Server 2012 Developer Editionをインストールすることで問題を解決しました。欠けている依存関係を私に提供したようです。


0

エンティティフレームワークをnugetを介してプロジェクトから削除し、再度追加します。


0

私の場合dll、参照を追加しましたがコピーされませんでした。これは、EntityFramework.SqlServer.dllがプロジェクトにコピーされないためです。そのdllを追加すればうまくいくでしょう。datamodelを追加したプロジェクトからそれを見つけることができます。


0

ここで役立つすべての提案に加えて、EF 6.1.3を使用している場合は、プロジェクトの.netバージョンが4.5以上であることを確認してください。

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