Visual Studio では、LINQ to DataSet コードのデバッグがサポートされています。 ただし、LINQ to DataSet コードと LINQ to DataSet 以外のマネージド コードのデバッグにはいくつかの違いがあります。 ほとんどのデバッグ機能は、ステップ実行、ブレークポイントの設定、デバッガー ウィンドウに表示される結果の表示など、LINQ to DataSet ステートメントで動作します。 ただし、遅延クエリの実行には、LINQ to DataSet コードのデバッグ時に考慮すべきいくつかの副作用があり、エディット コンティニュの使用にはいくつかの制限があります。 このトピックでは、LINQ to DataSet 以外のマネージド コードと比較して、LINQ to DataSet に固有のデバッグの側面について説明します。
結果の表示
LINQ to DataSet ステートメントの結果は、DataTips、ウォッチ ウィンドウ、および [クイック ウォッチ] ダイアログ ボックスを使用して表示できます。 ソース ウィンドウを使用すると、ソース ウィンドウ内のクエリのポインターを一時停止でき、データヒントが表示されます。 LINQ to DataSet 変数をコピーし、[ウォッチ] ウィンドウまたは [クイック ウォッチ] ダイアログ ボックスに貼り付けることができます。 LINQ to DataSet では、クエリは作成時または宣言時には評価されず、クエリの実行時にのみ評価されます。 これは 遅延実行と呼ばれます。 そのため、クエリ変数は評価されるまで値を持っていません。 詳細については、「 LINQ to DataSet のクエリ」を参照してください。
デバッガーは、クエリ結果を表示するためにクエリを評価する必要があります。 この暗黙的な評価は、デバッガーで LINQ to DataSet クエリの結果を表示するときに発生し、考慮すべきいくつかの効果があります。 クエリの各評価には時間がかかります。 結果ノードの展開には時間がかかります。 一部のクエリでは、評価を繰り返すとパフォーマンスが著しく低下する可能性があります。 クエリを評価すると、副作用が発生する可能性もあります。これは、データの値やプログラムの状態に対する変更です。 すべてのクエリに副作用があるわけではありません。 クエリを副作用なしで安全に評価できるかどうかを判断するには、クエリを実装するコードを理解する必要があります。 詳細については、「 副作用と式」を参照してください。
編集と継続
エディット アンド コンティニューでは、LINQ to DataSet クエリの変更はサポートされていません。 デバッグ セッション中に LINQ to DataSet ステートメントを追加、削除、または変更すると、エディット コンティニュでは変更がサポートされていないことを示すダイアログ ボックスが表示されます。 その時点で、変更を元に戻すか、デバッグ セッションを停止し、編集したコードを使用して新しいセッションを再開できます。
さらに、Edit and Continue は、LINQ to DataSet ステートメントで使用される変数の型や値の変更をサポートしていません。 ここでも、変更を元に戻すか、デバッグ セッションを停止して再起動できます。
Visual Studio の Visual C# では、LINQ to DataSet クエリを含むメソッド内のコードで Edit and Continue を使用することはできません。
Visual Studio の Visual Basic では、LINQ to DataSet クエリを含むメソッド内でも、LINQ to DataSet を使用していないコードで「編集の継続」機能を利用できます。 変更が LINQ to DataSet クエリの行番号に影響する場合でも、LINQ to DataSet ステートメントの前にコードを追加または削除できます。 LINQ to DataSet 以外のコードの Visual Basic デバッグ エクスペリエンスは、LINQ to DataSet が導入される前と同じままです。 ただし、変更を適用するためのデバッグを停止しない限り、LINQ to DataSet クエリを変更、追加、または削除することはできません。