在数据访问层中,查询数据库并返回结果的可枚举对象,返回具有属性Name,Age等的Dog对象列表,而不是具有"Name"等列的DataTable,有什么好处, "年龄"等?
一些:
类型安全
序列化不仅仅是XML而是JSON,二进制......
可读性
更轻盈
能够添加行为
能够定义DataAnnotation和验证逻辑
能够使用ORM
如果你使用普通的DataTable,你最终会得到魔术字符串(即使你使用常量).提取值的代码最终变得笨拙且容易出错,这主要是因为您最终必须提供数据(名称,表达式等),而您实际上是在尝试表达代码.
每当你打电话DataTable.Select
或者DataTable.Sort
访问DataRow
索引器时,想象一下如果你使用的是强类型模型,那么会减少多少绒毛 - 而且错误的可能性会降低.当然,这可能是一个强类型的数据集,但即便如此,我发现与POCO的摩擦力通常较小.
此外,POCO通常比DataTables 需要更少的绒毛来测试代码.