1

VS2012Ultimateを使用したソリューションのセットアップは次のとおりです。

POCOクラスを使用するすべてのビジネスドメインタイプを含むプロジェクト(MyDomainModelなど)があります。MyDomainModelプロジェクトを参照する別のプロジェクト(例:MyEntity)があり、SaveChangesメソッドでカスタムビジネスロジック(例:データの挿入および変更時の自動タイムスタンプ)を実装する派生DbContextクラス(例:MyDbContext)があります。

データベースの初期化の一部として、既知のシードデータを使用して派生DbContext(MyDbContextなど)をテストする別のmstestベースのプロジェクト(MyEntity_Testsなど)があります。

私の問題は、テストをデバッグするときに、MyDbContextのc#コードに設定されたブレークポイントがヒットしないことです。ただし、ファイルにDebug.Print( "xxx")などの行を入れて同じテストをデバッグすると、テスト出力には期待される出力"xxx"が含まれます。

Entity Frameworkランタイムは、これらのdll(MyDomainModel.dllなど)をラップするために、バックグラウンドでプロキシdllを生成することを知っています。ただし、MyDbContextのように自分のコードをデバッグできないことは、私にとって本当に大きな問題です。EFコードファーストを使用するときに他の人が同様の問題を抱えていますか?この問題を解決する方法は?

4

1 に答える 1

0

派生したDbContextクラスの行にブレークポイントを設定してデバッグを開始し、その上にマウスを置いて、ヒットしない理由を確認します。ほとんどの場合、シンボルはロードされません。デバッグ時にロードされたモジュールウィンドウに移動し、アセンブリを右クリックすると、VSがシンボルのロードを試みた場所を確認できます。シンボルを手動でロードすることもできます。シンボルがアセンブリと一致しない場合は、プロジェクトを再構築して最新のシンボルを取得する必要があることに注意してください。ブレークポイントがヒットしないもう1つの理由は、ソースコードがアセンブリと一致しないためである可能性があります。[設定]->[デバッグ]のチェックボックスをオフにして、アセンブリと一致しないソースでのデバッグを有効にすることができますが、このようなデバッグは面倒で逆効果です。再度、再構築が役立つはずです。リリースではなく、アセンブリのデバッグバージョンをデバッグしようとしていると想定しています。

于 2012-12-05T23:48:05.217 に答える