数据集是否存在任何已知问题

时间:2017-05-18 15:31:32

标签: c# .net sql-server

对于检索多个DataTable的存储过程或检索单个DataSet的单个存储过程,是否更好?

一位经验丰富的同事告诉我,使用DataSet存在已知问题和错误,它使代码无法读取,并且通常最好使用DataTables和多次调用存储过程。

在线搜索我无法找到有问题的文档问题和错误,同时也了解到它被广泛使用。

2 个答案:

答案 0 :(得分:7)

稀释。我以前遇到过这种事情。请允许我翻译你的同事告诉你的内容。

使用DataSet存在已知问题和错误,它使代码无法读取,并且通常最好使用DataTables和多次调用存储过程。

平均值

作为这里比较高级的开发人员,我没有足够多地使用DataSets知道如何有效地使用它们。我记得当他们是全新的时候人们对他们说了什么,但我是一只没有学习新技巧的老狗,我希望你做我做的事情,所以我看起来并不坏。

令人遗憾的是,这很常见。在我现在工作的地方,曾经是网络开发人员的人试图说服我Linq“太新”和“充满了bug”,因为(我后来发现)他无法阅读Lambda表达式。当我向他展示C#隐含的属性字段时,他的该死的头脑被吹了。

如果您正确使用它们并对代码进行评论,则DataSets不可读或有错误。存储过程调用的DataTables同样有效,但DataSet基本上是类固醇DataTables的集合。您可能正在填充存储过程或直接使用LINQ to SQL。但是,在使用任何数据库时,问题变成“如何在不影响我的应用程序或服务器以及网络连接的性能的情况下,使用最少数量的数据库调用来完成大部分工作”。答案应该推动您的数据收集方法。

答案 1 :(得分:1)

我用DataSets目击的一个问题是它们被用作服务调用签名的一部分(.NET Remoting,WCF和传统Web服务是我见过的例子)。

这是一个不好的做法的原因是因为DataSet的有效载荷很大,这会伤害响应时间。

另一个原因是微软过去并不总是使DataSets向后兼容从一个版本的.NET到另一个版本。因此,如果您要在.NET 4.0中开发应用程序并且正在调用的服务正在.NET 1.1上运行,那么在将.NET 4.0 DataSet传递给接受服务的服务时,它可能会中断.NET 1.1 DataSet因为向后的可比性问题。