C#中使用大型DataSet的最佳实践

art*_*urn 6 c# dataset typed-dataset visual-studio-2008

目前,我正在设计和实现一个软件,该软件必须在两个具有master-detail arquitecture的表上实现CRUD操作.Header有大约五十万行,细节大约有几百万行.

在数据集中填写所有这些数据是疯狂的,数据也可以改变,我对数据库的本地副本不感兴趣.我很感兴趣,该软件工作流畅.虽然数据集可能不是最佳解决方案,但我应该使用它来与其他软件部分保持一致.

首先我想使用TypedDataset和一些像GetNext(),GetFirst(),GetByCod()的方法,但我不确定是否是最好的解决方案......我正在做一点测试,不能很好地工作流利.

我很想知道其他开发人员如何做到这一点,最佳实践以及使用大数据进行操作的"最佳选择".

我正在使用Visual Studio 2008和Sql Server 2005.

补充: 当你谈到使用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");
        }
Run Code Online (Sandbox Code Playgroud)

Kam*_*mil 5

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

您需要 DataReader,而不是 DataSet。

具有大量数据的数据库的本地副本是实现此类目标的有效方法(应用程序的快速响应),但您会遇到同步(复制)、并发等问题。

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

我仍然不知道你想要操作哪些数据以及你的应用程序的目的是什么,但是客户端大量数据还有另一个缺点 - 你的应用程序将需要大量的内存和快速的 CPU。也许您的计算机速度很快并且能够处理此问题,但请考虑一下当有人在具有 1GHz Atom CPU 的平板电脑上安装您的应用程序时会发生什么。那将是一场灾难。