c# -数据表与数据集

Translate

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

但是,网络上的许多示例都显示使用DataSet代替,并通过collections方法访问表。

使用性能数据集或数据表作为SQL结果的存储方法是否有任何优势?

This question and all comments follow the "Attribution Required."

所有的回答

Translate

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

在性能方面,未优化的查询比.NET构造的“错误”选择更有可能导致效率低下。至少,这是我的经验。

来源
Translate

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

如果您只返回一个结果集,尽管我认为DataTable会更优化。我认为要提供DataSet的功能并跟踪多个DataTable,必须有一些开销(小额)。

来源
Translate

在1.x中,DataTables曾经做不到DataSets可以做的事情(不记得确切是什么)。在2.x中所做的所有更改。我的猜测是这就是为什么许多示例仍使用数据集的原因。 DataTables应该更快,因为它们更轻巧。如果您仅提取单个结果集,则这是您在这两者之间的最佳选择。

来源
Translate

DataSet的一项功能是,如果您可以在存储过程中调用多个select语句,则该DataSet将为每个存储一个DataTable。

来源
Translate

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

来源
Translate

无论如何,当您只处理一个表时,我发现最大的实际区别是DataSet具有“ HasChanges”方法,而DataTable没有。两者都有一个“ GetChanges”,因此您可以使用它并测试null。

来源
Translate

DataTable对象将表格数据表示为行,列和约束的内存表格缓存。 DataSet由DataTable对象的集合组成,您可以使用DataRelation对象将它们彼此关联。

来源