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

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

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

有帮助吗?

解决方案

这就是我不使用数据集的原因。如果您使用强类型数据集,您会从强类型中受益,但您会因为创建数据集所需的时间而付出代价,即使您只是使用它的一部分及其在代码库方面的可扩展性。如果您想修改现有行定义并修改行定义,那么这将在代码库中创建“霰弹枪”中断,因为添加新行的每个定义都必须进行修改,因为它不再编译。

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

再加上强类型数据集使您的代码看起来很糟糕(类型声明的长度),这几乎是我放弃数据集并转而使用业务对象的原因。

其他提示

数据集被严重高估和过度使用。使用强类型集合(谢谢泛型和自动属性!)。锦上添花的是,您现在甚至可以使用 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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top