在查询数据库并返回结果的可枚举对象的数据访问层中,返回说出带有属性名称,年龄等的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