在查詢數據庫並返回結果的可枚舉對象的數據訪問層中,返回說出帶有屬性名稱,年齡等的Dog對象列表的優點是什麼,而不是DataTable具有如「Name 「,」年齡「等?使用POCO比DataTables有什麼優勢?
回答
幾個:
- 類型安全
- 序列化不只是XML,但JSON,二進制...
- 可讀性
- 重量更輕
- 能夠添加行爲
- 定義DataAnnotation和驗證邏輯的能力
- 能力使用ORMs
當你提到序列化時,是否指的是某些.net自動序列化能力POCO,但它不知道如何序列化DataTables? – 2011-05-06 19:24:13
那是對的。 Serializing poco是自動的,只需要使用正確的serialiser – Aliostad 2011-05-06 21:02:40
如果你使用一個普通的DataTable,你最終會得到魔法字符串到處(即使你使用常量)。提取這些值的代碼最終會變得笨拙並且容易出錯,這基本上是因爲您最終不得不提供數據(名稱,表達式等),您真的想要在其中表示代碼。
你叫DataTable.Select
或DataTable.Sort
,或訪問DataRow
索引任何時候,想象有多少絨毛少 - 少潛在的錯誤 - 如果你使用強類型的模型會有。當然,這可能是一個強類型的數據集,但即使如此,我發現與POCO的摩擦通常較小。
此外,POCO通常需要較少的絨毛測試代碼比數據表。
聽起來像POCO是優越的。爲什麼會有人想要使用數據表?他們只是過去的遺物嗎? – 2016-06-28 01:45:13
@TheMuffinMan:並不完全......如果你實際上不需要對數據做任何事情而不是在網格中顯示它,例如,使用'DataTable'更簡單。或者如果您使用動態形狀的查詢。如果你習慣了Json.NET,就像使用'JObject'而不是反序列化到一個特定的類。 – 2016-06-28 05:19:28
它將您的業務邏輯從持久層中分離出來。
因此,您的'Dog'對象以及大多數使用它的代碼可以關注Dogs和Doginess本身,而不用擔心本週數據訪問風格何時變得流行。
如果您使用對象而不是DataTables,則會得到強類型結果,並使得使用數據的代碼更加乾淨。您不必擁有各種字符串就可以訪問應該只是某個對象的屬性。
另外,如果你使用像NHibernate的ORM工具,你可以直接從數據庫到你的對象映射,無需手動調出該數據庫和處理SqlCommands等。
- 1. 使用HttpApplication比HttpApplication有什麼優勢?
- 2. 使用Redux比React有什麼優勢?
- 3. 使用SVN比CVS有什麼優勢?
- 4. 使用javacv比opencv有什麼優勢?
- 5. 使用BaseAdapter比ArrayAdapter有什麼優勢?
- 6. 使用chiliproject比redmine有什麼優勢?
- 7. Digest :: SHA比Digest :: SHA1有什麼優勢?
- 8. git比git-svn有什麼優勢?
- 9. ServletRequestWrapper比過濾器有什麼優勢?
- 10. LePUS3相比UML有什麼優勢?
- 11. DB2比VSAM有什麼優勢?
- 12. django-treebeard比django-mptt有什麼優勢?
- 13. DIVS比表格有什麼優勢?
- 14. 在HTML中,使用div比使用表有什麼優勢?
- 15. 使用arrayWithCapacity比使用數組有什麼優勢?
- 16. 使用scrapyd有什麼優勢?
- 17. Hudson vs使用shellcript有什麼優勢?
- 18. 使用Python Virtualbox API有什麼優勢?
- 19. 使用迭代器有什麼優勢?
- 20. 使用NSOutputstream有什麼優勢?
- 21. 使用SproutCore框架有什麼優勢?
- 22. 與Ruby相比,在String中使用StringIO有什麼優勢?
- 23. 使用UTF-8比UTF-16有什麼優勢?
- 24. 使用Builder比常規xml文件有什麼優勢?
- 25. 您認爲使用RSpec``double'比'OpenStruct.new`有什麼優勢?
- 26. 使用城市飛艇比C2DM有什麼優勢
- 27. 使用git-svn比普通svn客戶端有什麼優勢?
- 28. 在Ruby中使用Integer類型比Numeric有什麼優勢?
- 29. 在ASP.NET中使用web API比web方法有什麼優勢
- 30. 使用Zend_Db模型比mysqli有什麼優勢?
的事實POCO給你帶有屬性Name,Age等的Dog對象列表,而不是具有「Name」,「Age」等列的DataTable。 – 2011-05-06 16:08:46