Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 数据集是否存在任何已知问题_C#_.net_Sql Server - Fatal编程技术网

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

C# 数据集是否存在任何已知问题,c#,.net,sql-server,C#,.net,Sql Server,对检索多个数据表的存储过程使用多个调用更好,还是使用检索单个数据集的单个存储过程更好 一位更有经验的同事告诉我,使用DataSet存在已知的问题和bug,它会使代码不可读,通常最好使用DataTables和对存储过程的多次调用 在网上搜索时,我无法找到困扰数据集的文档化问题和bug,同时也了解到它被广泛使用。Ahh。我以前碰到过这种事。请允许我翻译一下你同事告诉你的话 使用DataSet存在一些已知的问题和bug,它会使代码不可读,通常最好使用DataTables和对存储过程的多次调用 意味着

对检索多个数据表的存储过程使用多个调用更好,还是使用检索单个数据集的单个存储过程更好

一位更有经验的同事告诉我,使用DataSet存在已知的问题和bug,它会使代码不可读,通常最好使用DataTables和对存储过程的多次调用


在网上搜索时,我无法找到困扰数据集的文档化问题和bug,同时也了解到它被广泛使用。

Ahh。我以前碰到过这种事。请允许我翻译一下你同事告诉你的话

使用DataSet存在一些已知的问题和bug,它会使代码不可读,通常最好使用DataTables和对存储过程的多次调用

意味着

作为这里更高级的开发人员,我还没有充分使用数据集,不知道如何有效地使用它们。我记得人们在它们是全新的时候对它们说了些什么,但我是一只老狗,不会学新把戏,我希望你们按照我的方式做事,这样我就不会看起来很糟糕

令人遗憾的是,这很普遍。在我现在工作的地方,一个曾经是这里web开发人员的家伙试图说服我Linq“太新了”而且“充满了bug”,因为(正如我后来发现的那样)他无法读取Lambda表达式。当我给他看C#隐含属性字段时,他简直疯了


如果您正确地使用它们并对代码进行注释,
数据集
并不是不可读或有缺陷的<带有存储过程调用的code>DataTables同样有效,但
DataSet
基本上是类固醇上的
DataTables
的集合。您可能正在使用存储过程或直接使用LINQ到SQL来填充这两个过程。但是,在使用任何数据库时,问题变成了“如何在不影响应用程序或服务器性能的情况下,通过网络连接,以最少的数据库调用完成最多的工作”。这个问题的答案应该会驱动你的数据收集方法

我在
数据集
中看到的一个问题是,当它们被用作服务调用签名的一部分时(我看到的例子是网络远程处理、WCF和传统Web服务)

这是一种不好的做法,因为
数据集
的有效负载很大,这会影响响应时间


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

请您更有经验的同事提供具体文档,以便确保正确解决这些问题。他可能会闪避,向你吐烟,然后改变话题。他可能会给你发一两篇完全无关的文章,或者直接反驳他的主张。除非他给你一些具体和相关的东西(他可能会),否则他是个傻瓜,你应该礼貌地听他说什么——然后忽略它。出于好奇,这家伙是否对不变性有着奇怪的想法?@EdPlunkett我尊重这位同事,尤其是因为他是我的上司,所以我礼貌地请你不要骂他。只是数据集的使用太普遍了,让我很烦为什么我们不应该使用它。这可能是个人喜好和代码风格的问题。我很感激你不想对一位资深同事泼冷水。下面的CDove有一种比我更圆滑的方式来看待它。但底线是你的怀疑是正确的:那家伙在告诉你一些不真实的事情。如果你被禁止在工作中使用该课程,不要。他们在你的支票上签名。但不要怀疑你自己的判断。@MilosMilosavljevic请看我的答案。不幸的是,所有的开发人员都会在某个时候(不得不把自己踢出去)说一些糟糕的东西,因为我们还没有弄清楚它,这是一个坏习惯。它来自于现代软件开发,有很多脆弱的工作安全性。尽管Michael answer描述了一个可能的问题(当它们被用作服务调用签名的一部分时)我接受了CDove答案,因为它更适合我的问题描述,其中上下文设置为Dataset与DataTable相比可能面临的问题。为您的翻译竖起大拇指。如果您的.Net 1.1服务无法接受.Net
Dataset
,问题不在于您使用了
Dataset
,这是因为您仍然有一项使用了近20年技术的服务。除此之外,您在这里所说的一些内容完全不准确(例如数据表提供了与.Net 1.1更高的兼容性)。来源:,您不能总是控制与之通信的端点,因此说有人应该升级是没有意义的。原始帖子的重点是关于
数据集的已知问题,我指出了自己的经验。我说的话也没有不准确。我也没有说任何关于
DataTables
提供与.NET1.1更好的兼容性的内容。