使用POCO而不是DataTables有什么好处?

时间:2011-05-06 16:05:15

标签: c#

在数据访问层中,查询数据库并返回结果的可枚举对象,返回具有属性Name,Age等的Dog对象列表的优点是什么,而不是具有像“of”这样的列的DataTable姓名“,”年龄“等?

4 个答案:

答案 0 :(得分:8)

一些:

  • 类型安全
  • 序列化不仅仅是XML而是JSON,二进制......
  • 可读性
  • 更轻盈
  • 添加行为的能力
  • 能够定义DataAnnotation和验证逻辑
  • 使用ORM的能力

答案 1 :(得分:7)

如果你使用普通的DataTable,你最终会得到魔术字符串(即使你使用常量)。提取值的代码最终会变得笨拙且容易出错,主要是因为您最终必须提供数据(名称,表达式等),而您真正想要表达代码< / em>的

每当您致电DataTable.SelectDataTable.Sort或访问DataRow索引器时,想象一下,如果您使用的是强烈的绒毛 - 并且错误的可能性更小模型。当然,这可能是一个强类型的数据集,但即便如此,我发现与POCO的摩擦力通常较小。

此外,POCO通常比DataTables需要更少的测试代码。

答案 2 :(得分:1)

如果使用对象而不是DataTables,则会获得强类型结果,并使使用数据的代码更加清晰。您不必拥有各种字符串就可以访问应该只是对象上的属性。

此外,如果您使用像NHibernate这样的ORM工具,您可以直接从数据库映射到您的对象,而无需手动调用数据库并处理SqlCommands等。

答案 3 :(得分:0)

它将您的业务逻辑与持久层分开。

所以你的'Dog'对象,以及使用它的大部分代码,都可以关注Dogs and Doginess,而不用担心本周哪种数据访问风格很流行。