21

SqlConnectionからDbContextを構築しています。使用すると、次のエラーが発生します。

'System.Data.SqlClient'ADO.NETプロバイダーのEntityFrameworkプロバイダータイプ'System.Data.Entity.SqlServer.SqlProviderServices、EntityFramework.SqlServer、Version = 6.0.0.0、Culture = neutral、PublicKeyToken=b77a5c561934e089'はできませんでしたロードされました。

6.0.0-alpha2-11210を使用しています。

Entity.SqlServerへの参照があり、クエリの前に次のコード行を配置することで「修正」できたので、奇妙であることがわかりました。

var patch_only = System.Data.Entity.SqlServer.SqlProviderServices.Instance;

アルファ版のバグですか?

4

8 に答える 8

38

行ったことにより、EntityFramework.SqlServer.dllへの参照が作成されます。これにより、データアクセスアセンブリを使用して、このアセンブリがプロジェクトのbinフォルダーに確実にコピーされます。

データアクセスアセンブリのどこかに次のようなものを追加することで、同じことができます。

Type _Hack = typeof(System.Data.Entity.SqlServer.SqlProviderServices)
于 2013-08-29T12:53:28.177 に答える
13

遅れないことを願っています。私はASP.NET MVC4を使用Entity Framework 6 alpha 3していますが、同様の問題が発生しました。

ソリューションに複数のプロジェクトがあります。2つの主なプロジェクトは次のとおりです。

MyProject.Infrastructure.EntityFramework
MyProject.Web

最初のプロジェクトでは、すべてのリポジトリなどを設定しましたDbContext。このプロジェクトでは、2つの参照があります。

EntityFramework
EntityFramework.SqlServer

2番目のプロジェクトは私のウェブサイトです。最初のプロジェクトのリポジトリを使用してデータを返します。例えば:

private readonly IMyRepository myRepository;

public MyController(IMyRepository myRepository)
{
     this.myRepository = myRepository;
}

public ActionResult Details(int id)
{
     MyObject myObject = myRepository.FindById(id);

     return View();
}

これは私が問題を抱えていた場所ですFindById

私がしたことは、私のWebサイトに次の参照を追加することだけでした。

EntityFramework.SqlServer

私のweb.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>

そして、終了system.webServerタグの下:

<entityFramework>
     <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
          <parameters>
               <parameter value="v11.0" />
          </parameters>
     </defaultConnectionFactory>
</entityFramework>

これがお役に立てば幸いです。

于 2013-03-26T18:06:59.127 に答える
10

問題は「EntityFramework.SqlServer」参照です。

私のプロジェクトでは、データアクセス層でNuGetを使用してEntity Framework 6.0.1を追加すると、クライアント側にその参照がないため、クライアント側でも同じエラーが発生しました。

そこで、その参照をクライアント側にも追加することで問題を解決しました。

于 2013-11-06T13:59:01.917 に答える
1

同じソリューションでEF4とEF62つの異なるプロジェクトを使用しています。

NuGet for EF 6.0を使用した後、テストプロジェクトで削除されたEF4へのすべての参照。プロジェクトからEF6を再度削除し、EF4のSystem.Data.Entityへの参照を追加する必要がありました。

テストプロジェクトでEF6を介してデータにアクセスするには、EntityFramework.SqlServer.dll(4.5)を手動で参照し、ハック(上記)の推奨事項を使用する必要がありました。

テストプロジェクトのapp.configで変更を行う必要はありませんでした。

いいえ

 <section name="entityFramework" ...

といいえ

<entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> ...
于 2014-01-21T09:05:14.630 に答える
0

@ LeLong37

あなたとまったく同じエラーが発生しました:「...'System.Data.SqlServerCe.4.0'ADO.NETプロバイダーのEntityFrameworkプロバイダーが見つかりません...」

ディレクトリ「packages\EntityFramework.SqlServerCompact.6.0.0-rc1 \ lib\net40」から「EntityFramework.SqlServerCompact」への参照を追加することで解決しました

お役に立てれば

于 2013-09-15T07:53:12.073 に答える
0

これと解決策を約6分で説明するスクリーンキャストをYoutubeに追加しました。これを行ったのは、同じ問題が発生するTeam Buildを使用しているときに、Fabriceが提供するソリューションが機能しないためです。

于 2014-02-08T15:16:30.183 に答える
0

テンプレートからの新しいMVCサイトで問題が発生した場合:1)Microsoft.ASPNet.Identity.EntityFrameworkをアンインストールします(Entity Frameworkをアンインストールするかどうかを尋ねられます-先に進んでください。)2)EntityFrameworkをインストールします3)Microsoft.ASPNET.Identity.EntityFrameworkを再インストールします

今働いているはずです。

于 2014-12-31T23:58:40.317 に答える
-2

2つのファイルをコピーして問題を解決しました

EntityFramework.SqlServer.dll
EntityFramework.SqlServer.xml

/bin

于 2015-09-09T06:50:25.727 に答える