我在应用程序中创建了很多存储过程,它们在datatable对象中返回查询结果。我从不使用数据集。为什么我只使用数据集而不是简单地将查询结果作为数据表对象返回?
答案 0 :(得分:1)
DataSet可以容纳多个DataTable。因此,主要原因是如果您编写了一个返回多个结果集的存储过程。
更好的方法是使用像NHibernate这样的ORM并返回模型对象而不是DataTable。
答案 1 :(得分:1)
如果您仍在掌握ADO.NET,理想情况下应该将查询结果放入DataReader而不是DataTables。它们效率更高。如果我使用ADO.NET并希望从一个过程返回多个rcordsets,我将使用DataReader的NextResult()方法来完成它们。
正如mpenrow所指出的,数据集是DataTables的容器,可以容纳多个表。您使用数据集的一个原因是,如果您想要显示主/子记录,例如http://www.mikesdotnetting.com/Article/57/Displaying-One-To-Many-Relationships-with-Nested-Repeaters,则可以在DataTable之间创建关系。
正如其他人所说,像Linq To Sql,Entity Framework或nHibernate这样的ORM是最终的方式。它们都在内部使用DataReaders来填充模型对象。
答案 2 :(得分:0)
既不是也不是。我总是返回强类型的对象。 DataSets或DataTables的使用通常表示程序员没有理解面向对象的使用。这是完全过时的技术。
了解更现代的数据处理方法。在过去的20年里(这是O / R地图制作者的周期),这些东西得到了发展。