36

最近、EntitiesFramework5からEntitiesFramework6 Alpha 2にアップグレードしましたが、次のエラーが発生します。

メソッドが見つかりません:'System.Data.Objects.ObjectContext System.Data.Entity.Infrastructure.IObjectContextAdapter.get_ObjectContext()'。

私が電話するとこれは打撃を受けています

if (Membership.ValidateUser(model.UserName, model.Password)) {}

これは、なぜこのエラーが発生するのかわからない前は正常に機能していました。助言がありますか?

4

10 に答える 10

32

EF6にはありませんSystem.Data.Objects.ObjectContext。EF 6は、を含むいくつかのタイプをObjectContextからに移動System.Data.Entity.dllEntityFramework.dll、それらの名前空間を変更しました。このエラーが発生するという事実は、アプリケーションを再コンパイルしようとしたのではなく、単に置き換えEntityFramework.dllて、最高のものを期待していることを示しています。それはうまくいきません。EF 6で動作するようにコードを更新する必要があります。への参照を削除System.Data.Entity.dllし、新しいタイプを参照するようにコードを更新する必要があります。

プロパティへの参照IObjectContextAdapter.ObjectContextが使用しているライブラリにある可能性がありますが、ほとんどの場合、それは独自のコードにあります。エラーメッセージ(質問に含めなかった部分)は、それがどこから来ているのかを教えてくれるはずです。

于 2013-01-01T20:54:11.523 に答える
24

私にとって、これらを以下に更新することはうまくいきました:
using System.Data.Objects; --> using System.Data.Entity.Core.Objects;

using System.Data.Objects.DataClasses; --> using System.Data.Entity.Core.Objects.DataClasses;

于 2014-02-18T20:04:06.043 に答える
14

私も使ってEF 6います。

パッケージv。1.2のアンインストールの問題をなんとか解決しましたMicrosoft.AspNet.Providers.Core。代わりにバージョン1.1を使用しています。あなたが私のようで、を使用している場合は、パッケージに依存しているため、パッケージLocaDbをアンインストールする必要があります。LocaDbもちろん、LocaDbを再インストールする必要があります...

VisualStudio内のNuGetパッケージマネージャーコンソールを使用してv。1.1を取得できます。

Install-Package Microsoft.AspNet.Providers.Core -Version 1.1

この問題に関しては、MicrosoftConnectのバグがあります。

Microsoft.AspNet.Providers.CoreはEF6と互換性がありません

于 2013-04-18T22:27:01.030 に答える
5

プロバイダーの新しい2.0バージョン(http://www.nuget.org/packages/Microsoft.AspNet.Providers.Core/)はEF6互換です(実際にはEF6でのみ機能します)。

于 2014-01-07T12:59:26.913 に答える
2

非推奨としてマークされたNugetを介してインストールしたAspNetプロバイダーを削除することで、これを解決することができました。これを行うと、EntityFrameworkもアンインストールされます。

次に、新しいAspNetユニバーサルプロバイダーをインストールし、続いてEntity Framework 6を​​インストールしましたが、すべての問題が修正されました。

于 2013-10-22T21:53:48.783 に答える
1

このリンクを確認してください

http://visualstudiomagazine.com/articles/2014/03/01/whats-new-in-entity-framework-6.aspx

EF 6.2を更新しましたが、同じエラーが発生し、休閑地と同じ解決策を見つけました

名前空間System.Data.EntityをSystem.Data.Entity.Coreに変更します。これには、System.Data。*名前空間への参照も含まれます(たとえば、System.Data.ObjectsはSystem.Data.Entity.Core.Objectsになります)。

于 2015-01-01T14:19:03.353 に答える
1

これは、エンティティフレームワークがマシンにインストールされているdotnetフレームワークライブラリでメソッドを見つけることができない場合に発生します。したがって、dotnetFramework4.5.2以降をインストールしてください。問題が修正されます。

于 2015-08-17T04:04:00.053 に答える
1

私のために働いたのは次のとおりでした:

  1. dll'Microsoft.AspNet.DataSource'を次のコマンドでインストールします。

    PM>インストール-パッケージMicrosoft.AspNet.EntityDataSource

  2. プロジェクトで「Microsoft.AspNet.DataSource.dll」を参照します。

  3. 次のusing宣言を追加しました。

    System.Data.Entity.Core.Metadata.Edmを使用します。

    System.Data.Entity.Core.Objectsを使用します。

    Microsoft.AspNet.EntityDataSourceを使用します。

  4. 次のusing宣言を削除しました。

    System.Data.Entityを使用します。

    System.Data.Metadata.Edmを使用します。

    System.Data.Objectsを使用します。

    System.Web.UI.WebControlsを使用します。

出来上がり、コードはコンパイルされて機能しています。

于 2015-10-01T12:54:55.983 に答える
1

これには、edmxファイルに関連付けられた古いバージョンがあります。

  • Nugetを使用してEFを再インストールします
  • .edmxファイルを削除し、テーブルを使用して再作成します
于 2016-08-12T14:57:38.873 に答える
0

私にとっての迅速で簡単な修正は、問題のあるアセンブリ(非推奨)を削除し、新しいライブラリへの参照を追加することでした。コードはContext.tt内で変更され、次のようになります。

if (container.FunctionImports.Any())
{
#>
using System.Data.Entity.Core.Objects; // The assembly you need
using System.Linq;
<#
}

変更する前は、次のように表示されていました。

if (container.FunctionImports.Any())
{
#>
using System.Data.Objects; // Error on compile
using System.Data.Objects.DataClasses; // Error on compile
using System.Linq;
<#
于 2016-06-16T13:04:56.493 に答える