Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.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语言中使用大型数据集的最佳实践#_C#_Visual Studio 2008_Dataset_Typed Dataset - Fatal编程技术网

C# C语言中使用大型数据集的最佳实践#

C# C语言中使用大型数据集的最佳实践#,c#,visual-studio-2008,dataset,typed-dataset,C#,Visual Studio 2008,Dataset,Typed Dataset,目前,我正在设计和实现一个软件,该软件必须在两个表上实现CRUD操作,并具有主详细结构。标题大约有50万行,细节大约有100万行 在数据集中填充所有这些数据是疯狂的,而且数据可能会更改,我对数据库的本地副本不感兴趣。 我对那个软件工作流畅感兴趣。虽然dataset可能不是最好的解决方案,但我应该使用它来与其他软件部件保持一致 首先,我想使用TypedDataset和一些方法,比如GetNext()、GetFirst()、GetByCod(),但我不确定这是否是最好的解决方案。。。。 我正在做一个

目前,我正在设计和实现一个软件,该软件必须在两个表上实现CRUD操作,并具有主详细结构。标题大约有50万行,细节大约有100万行

在数据集中填充所有这些数据是疯狂的,而且数据可能会更改,我对数据库的本地副本不感兴趣。 我对那个软件工作流畅感兴趣。虽然dataset可能不是最好的解决方案,但我应该使用它来与其他软件部件保持一致

首先,我想使用TypedDataset和一些方法,比如GetNext()、GetFirst()、GetByCod(),但我不确定这是否是最好的解决方案。。。。 我正在做一个小测试,工作不太流利

我感兴趣的是了解其他开发人员是如何做到这一点的,最佳实践以及使用大数据进行操作的“最佳选择”是什么

我正在使用VisualStudio2008和SQLServer2005

添加: 当您谈到使用SqlDataReader时,您指的是这样的东西吗

using (SqlConnection con = new SqlConnection(CON)) {

            con.Open();
            SqlCommand cmd = new SqlCommand("SELECT * FROM TABLE");
            cmd.Connection = con;
            SqlDataReader rd = cmd.ExecuteReader();
            BindingSource bindingSource = new BindingSource();
            bindingSource.DataSource = rd;
            bindingNavigator1.BindingSource = bindingSource;

            txtFCOD.DataBindings.Add("Text", bindingSource, "FIELD");
        }

我认为没有办法管理这么大的数据集

您需要的是DataReader,而不是DataSet

拥有大量数据的数据库的本地副本是达到这种效果的有效途径(应用程序的快速响应),但在同步(复制)、并发性等方面会出现问题

最佳实践是只从服务器获取用户真正需要的数据。必须通过存储过程等使用服务器端处理


我仍然不知道你想要处理什么数据,你的应用程序的目的是什么,但是客户端的大量数据还有另一个缺点——你的应用程序需要大量的ram和快速的CPU。也许你的电脑速度快,有能力处理这个问题,但是想想当有人用1GHz Atom CPU在平板电脑上安装你的应用程序时会发生什么。这将是一场灾难。

很少会出现需要一次检索所有数据的情况

你可以考虑以下内容:

  • 使用视图为特定的较小数据集提供服务
  • 考虑使用SQL Server 2005中引入的OVER()功能进行分页
  • 不要将数据集用于大量数据。数据阅读器非常有用 在这种情况下效率更高
就我个人而言,我认为您应该避免将大量数据加载到内存中,除非您能够完全控制加载的数据量和处理数据的时间。请记住,如果在服务器端处理数据,您将使用其他进程可能需要的资源


您应该始终尝试一次处理较小的块,最好是尽可能短的时间。这可以防止您的进程长时间占用任何资源。

首先,我不会使用数据集。为什么一次查询所有行?当您必须处理大量adta时,我会使用datareader,当您必须提供一个简单的界面时,我建议使用或MapperYes,我同意Boas Enkler的观点。仅在所需时间查询所需数据。在查询时请注意使用表上的索引,并且只需要查询中的特定信息。让数据库来完成它的工作:-)为什么客户端需要这么多数据?@arturn你想用这个大数据集做什么?我正在做一个CRUD主细节表单。有数百万行的表单?这太疯狂了。