2010-08-15 42 views
1

我在我的應用程序中創建了很多存儲過程,這些存儲過程返回數據表對象中的查詢結果。我從不使用數據集。爲什麼我會使用數據集而不是簡單地將查詢結果作爲數據對象返回?數據集與返回數據表

回答

1

DataSet可以容納多個DataTable。所以主要的原因是如果你寫了一個存儲過程返回多個結果集。

更好的方法是使用像NHibernate這樣的ORM,並返回模型對象而不是DataTable。

+1

在我看來,使用ORM有時候並不會更好;有時候返回一個類似於表的結構就是你所需要的。 – surfmuggle 2013-01-05 08:35:42

0

既沒有也沒有。我總是返回強類型的對象。一般來說,數據集或數據表的用法表明程序員不瞭解面向對象的用法。這完全是過時的技術。

看看更現代的方法來處理數據。在過去20年裏發展的東西(這是O/R映射器的週期)。

+0

如果你有一個小應用程序,只想填充一些簡單的控件,如組合框,表適配器aproach很適合這個問題。 – surfmuggle 2013-01-05 08:35:24

+0

@threeFourOneSixOneThree是的,我知道。同樣的事情,與一年的2個字符 - 它只是一個小應用程序。專業的態度是「做得對」,而不是「讓我 – TomTom 2013-01-05 09:26:24

1

如果您仍然正在處理ADO.NET,您應該理想地將查詢結果存入DataReaders而不是DataTables。他們更有效率。如果我使用ADO.NET並希望從過程返回多個rcordset,那麼我會使用DataReader的Ne​​xtResult()方法來檢查它們。

正如mpenrow指出的那樣,Datasets是DataTables的容器,可以容納多個表。例如,如果要顯示主/子記錄,例如http://www.mikesdotnetting.com/Article/57/Displaying-One-To-Many-Relationships-with-Nested-Repeaters,則使用數據集的一個原因是在數據表之間創建關係。正如其他人所說,像Linq To Sql,Entity Framework或nHibernate這樣的ORM是最終走向的途徑。它們都在內部使用DataReader來填充模型對象。