web-dev-qa-db-ja.com

VS2013 Debugger + Entity Framework:「ランタイムは式の評価を拒否しました」、クラッシュ

ライブSQL Serverにヒットしているコードに対して単体テストをデバッグするときに、VS2013 UltimateデバッガーのEntity Framework 6.0.1で多くの問題が発生しています。

エンティティを含む変数は、デバッガーで表示できません。たとえば、DbContextに対してLINQクエリを実行し、結果ビューを更新してクエリを実際に実行した場合、結果の値は「子を評価できませんでした」です。 I ToArray()の場合、変数はIQueryableではなくエンティティの配列になり、配列の各結果は「式を評価できませんでした」になります。その配列から単一のエンティティ値を変数に保存して表示しようとすると、「ランタイムはこの時点で式の評価を拒否しました」というメッセージが表示されます。

"The runtime has refused to evaluate the expression at this time"

多くの場合、エンティティプロパティへのアクセスを含む行をF10キーを押すと、Visual Studioがクラッシュします。

モックアップされた偽のDbSetに対してテストを実行している場合、これは起こりません。

これは既知の問題ですか?これを修正する方法はありますか?

38
nlawalker

私は同様の問題を抱えており、理由はまだわかりませんが、オプション->デバッグ->一般->管理互換モードを使用する-オン、通常どおりデバッグを続行できました。

このオプションは ブログ投稿 で見つけました。

82
MrEdmundo

VS2013をインストールした直後に、エラーも発生しました

「式を評価できませんでした」

古いVS2012ソリューションのデバッグ中の多数の変数(エンティティフレームワークに関係するコードはありません)。

解決したのは、ソリューションファイルに関連付けられた2つの Solution User Options (*.suo) files を削除することでした。たとえば、MySolution.sln、対応する2つのファイルは次のとおりです。

  • MySolutionv11。suo(VS2012バージョン)
  • MySolutionv12。suo(VS2013バージョン)

V12バージョンは、v11バージョンの設定を使用して最初に作成されたときに破損している可能性があります。したがって、両方を削除すると、新しいクリーン.suoファイルはVS2013用に作成され、問題はなくなりました。

(注、.suoファイルはWindows 7では非表示としてマークされているため、 設定を変更して表示 またはコマンドラインを使用して表示しない限り、Windowsエクスプローラーで簡単に表示されない場合があります。

7
Ray Vega

ここの群衆に自分の声を加えたかっただけです。

Entity Frameworkを使用せずにUWPアプリを開発していますが、ランタイムが「式の評価を拒否した」という同様の問題が発生しました。

Microsoft Visual Studio Enterprise 2015 Update 2を使用していましたが、解決策はpdateに更新することでした。

0
Zach Posten

内部に仮想エンティティを持つエンティティがある場合、デバッグに関する問題がある可能性があります。 Efスコープ内のエンティティでデバッグしようとしたときにこの問題が発生しました。 Entity Frameworkは、仮想エンティティの状態をキャッチしようとします。

Dbスコープ外のエンティティを表示しているときに、より良い結果が得られました。このように、エンティティ値を監視している間、EFは関与しません。

0
user2996484

Visual Studio 2013Update 2は、次のコメントにあるこのエラーを修正することを約束します。

http://weblog.west-wind.com/posts/2013/Nov/21/Visual-Studio-2013-Could-not-evaluate-Expression-Debugger-Abnormality

0
Nick