调试 LINQ to DataSet 查询

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 语句的结果。 使用源窗口,可以将指针暂时停留在源窗口中的查询上,这样数据提示就会出现。 可以复制 LINQ to DataSet 变量,然后将其粘贴到“监视”窗口或“快速监视”对话框。 在 LINQ to DataSet 中,创建或声明查询时并不计算查询,而只在执行查询时才计算。 这称为“延迟执行”。 因此,查询变量直到计算时才有值。 有关详细信息,请参阅 LINQ to DataSet 中的查询

调试程序必须计算查询才能显示查询结果。 在调试器中查看 LINQ to DataSet 查询结果时,将进行这种隐式计算,应考虑到这会产生一些影响。 查询的每次计算都需要时间。 展开结果节点需要时间。 对于某些查询,重复计算可能引起明显的性能损失。 计算查询也会有副作用,这些副作用会更改数据值或程序的状态。 不是所有查询都具有副作用。 要确定查询能否安全计算而没有副作用,必须了解实现查询的代码。 有关详细信息,请参阅副作用和表达式

编辑并继续

“编辑并继续”不支持对 LINQ to DataSet 查询进行更改。 如果在调试会话过程中添加、删除或更改 LINQ to DataSet 语句,则会出现一个对话框,告知“编辑并继续”不支持这种更改。 此时,可以撤消更改,或停止调试会话并对编辑的代码重新启动新会话。

此外,“编辑并继续”不支持更改 LINQ to DataSet 语句中使用的变量的类型或值。 同样,可以撤消更改,或停止并重新启动调试会话。

在 Visual Studio 的 Visual C# 中,无法对包含 LINQ to DataSet 查询的方法中的任何代码使用“编辑并继续”。

在 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 查询。

请参阅