2008-08-30 61 views
1

一个DataSet应该代表多少?使用订购系统的例子:在展示您的订单时,我还会显示与您的订单系列相似的商品列表以及我们最受欢迎的商品列表。 虽然您的物品缠绕在涉及您和您的过去订单,首选供应商以及与您作为客户有关的各种其他信息的关系网络中,但其他物品并没有这些相同的关系。我用来浏览代表你的东西的一组查询与我用于这些其他项目列表的查询不同。一个DataSet应该代表多少?

我的倾向是为不同类型的关系创建不同的数据集,但然后我创建了十个单独的项目DataTables,这似乎是错误的。当我实例化较大的DataSet时,即使我只对一个看起来不正确的小子集感兴趣,并且当我试图将所有这些打包到一个DataSet中时,我都会看到一个很大的杂乱的东西,其中有几个项目表相邻,而我很确定这是错误的。

也许我高估了DataSet的关系特性,或者我只是需要克服自己,无论哪种方式我都可以使用一些指导。

回答

1

这就是为什么我不使用数据集。如果您使用强类型数据集,您可以从强类型中受益,但是您需要花费时间来创建一个数据集,即使您只是使用它的一部分,以及它在代码库方面的可扩展性。如果你想修改一个已存在的行并修改行定义,那么这将在代码库中创建“霰弹枪”中断,因为添加新行的每个定义将不得不进行修改,因为它不再编译。

为了避免上述情况,最明智的方法是通常放弃合理的重复使用。根据用途和用途定义数据集。然而,与此相关的主要问题是API的使用,最终得到的数据集与其他数据集相似,但因为它是不同的数据集类型,所以必须将其转换为使用通用API,这既痛苦又不雅。

此外,强类型数据集使您的代码看起来很可怕(类型声明的长度)这一事实是我放弃数据集并切换到业务对象的原因。

4

数据集大大被高估和过度使用。使用强类型集合(谢谢你,泛型和自动属性!)。作为锦上添花的功能,现在您甚至可以使用LINQ对自定义对象进行很酷的查询。

对数据集

好埃斯波西托文章与自定义对象:

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