一个DataSet应该代表多少?使用订购系统的示例:在显示订单时,我还会显示与您的订单类似的商品列表以及我们最受欢迎商品的列表。 虽然您的项目纠缠在涉及您和您过去的订单,首选供应商以及与您作为客户相关的各种其他信息的关系网中,但其他项目没有这些相同的关系。我用来导航代表你的东西的一组查询与我用于其他一个项目列表的查询不同。
我倾向于为不同类型的关系创建不同的DataSet,但后来我创建了十个单独的DataTables项,这似乎是错误的。当我实例化较大的DataSet时,即使我只对一个似乎错误的小子集感兴趣,当我尝试将所有这些包装到一个DataSet中时,我有一个看起来很乱的东西,有几个项目表彼此相邻而且我是很确定这是错误的。
也许我过分重视DataSet的关系功能,或者我只是需要克服自己,无论哪种方式我都可以使用一些指导。
答案 0 :(得分:4)
DataSet被严重高估和过度使用。使用强类型集合(谢谢,泛型和自动属性!)。作为锦上添花,您甚至可以使用LINQ对自定义对象执行很酷的查询。
关于数据集与自定义对象的好Esposito文章:
http://msdn.microsoft.com/en-us/magazine/cc163751.aspx
自动属性:
http://weblogs.asp.net/dwahlin/archive/2007/12/04/c-3-0-features-automatic-properties.aspx
LINQ与您的对象:
http://blogs.msdn.com/wriju/archive/2006/09/16/linq-custom-object-query.aspx
答案 1 :(得分:1)
这就是我不使用数据集的原因。如果您使用强类型数据集,您可以从强类型中受益,但即使您只使用其中的一部分及其在代码库方面的可扩展性,您也需要根据创建一个数据集的时间来支付它。如果你想修改一个现有的并修改一个行定义,那么这将在代码库中创建“shotgun”中断,因为添加新行的每个定义都必须修改,因为它不再编译。
为了避免上述情况,最明智的方法是通常放弃合理的重复使用。根据目的和每次使用定义数据集。然而,主要的问题是API的使用,你最终得到的数据集与另一个数据集相似但是因为它是一个不同的数据集类型,你必须将它转换为使用普通的API,既痛苦又不优雅。
这一点,再加上强类型数据集使你的代码看起来很可怕(类型声明的长度)这几乎是我放弃数据集并切换到业务对象的原因。