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