数据表与数据集

我目前使用DataTable从数据库中获取结果,我可以在我的代码中使用。

但是,Web上的很多示例使用DataSet来代替,并通过collections方法访问表。

使用DataSets或DataTables作为SQL结果的存储方法是否有任何明智的或性能优势?

这真的取决于你带回的数据types。 由于DataSet(实际上)只是DataTable对象的集合,因此可以将多个不同的数据集合返回到一个单一的,因此更易于pipe理的对象。

从性能angular度来看,未经优化的查询比从.NET构造的“错误”select更有可能导致效率低下。 至less,这是我的经验。

一个主要区别是DataSet可以容纳多个表,并且您可以定义这些表之间的关系。

如果你只是返回一个单一的结果集,但我会认为一个DataTable会更加优化。 我会认为必须有一些开销(小)才能提供DataSet的function,并跟踪多个DataTables。

在1.x中曾经有过DataTables无法做的事情,哪些DataSets可能(不记得到底是什么)。 所有这一切都改变了2.x. 我的猜测是这就是为什么很多示例仍然使用DataSets。 数据表应该更快,因为它们更轻量级。 如果你只是拉一个单一的结果集,它是你在这两者之间的最佳select。

DataSet的一个特性是,如果你可以在存储过程中调用多个select语句,DataSet将为每个DataTable分配一个DataTable。

填充DataTable时可以使用一些优化,例如调用BeginLoadData(),插入数据,然后调用EndLoadData()。 这会closuresDataTable中的一些内部行为,如索引维护等。有关更多详细信息,请参阅本文 。

当你只处理单个表时,我发现的最大的实际区别是DataSet有一个“HasChanges”方法,但是DataTable没有。 两者都有一个“GetChanges”,所以你可以使用它并testing为null。

Interesting Posts