我对Windows窗体应用程序中的数据集有疑问。

第1部分:

题:

1)数据集是否在每次实例化时都命中数据库。

第2部分:

假设:


我第一个问题的答案是正确的
我正在使用的数据集具有相对少量的数据,并且应用程序本身不会有大量的并发用户。
表单数量可能很多,但需要相同的数据集。


题:

1)将静态版本的数据集存储在内存中是个坏主意吗?

选项(对这些可能的解决方案进行评分):

选项1:创建一个静态类,充当数据集的容器。

选项2:在需要表单的表单内创建一个数据集,然后为依赖于该数据集的任何后续表单创建一个属性,并将对该数据集的引用传递给该特定表单,从而防止GC重新分配内存(并减少数量)数据库调用)。

伪代码:这是实例化数据集的父表单。

public partial class ParentForm: Form
{
   private DataSet dataset;

   public ParentForm()
   {
   //logic that populates dataset
   }

   Button_Click(object sender, EventArgs e)
   {
       DependentOnDataSetForm dependent = new DependentOnDataSetForm(dataset);
   }
}


伪代码:这是一种依赖于同一数据集的形式。

public partial class DependentOnDataSetForm : Form
{
   private DataSet dataset;

   public DependentOnDataSetForm (DataSet dataset)
   {
      this.dataset = dataset;
   }

   // Another from that depends on the same dataset.
   Button_Click(object sender, EventArgs e)
   {
       DependentOnDataSetForm2 dependent = new DependentOnDataSetForm2(dataset);
   }
}


奖励问题:(不适用于我目前的情况,但很高兴知道以供将来参考)。

创建多个仅负责某些形式所需的某些数据的DataSet.xsd文件是一个好主意吗?例如(完全假设):假设我有一个负责执行订单的订单服务,此特定服务将需要访问订单表,客户表,运输表等。因此,创建一个仅容纳.xsd文件的文件所需的表一个好主意?

最佳答案

问题1的答案为否。 DataSet对象被视为ADO.NET断开连接的对象。因此,它不会访问数据库。您可以使用ADO Connected对象(即DataAdapter)的结果实例化DataSet,但是DataSet本身不连接到数据库。

我会选择选项2,但要知道它是一个参考对象,更改一种形式可能会影响另一种形式。

关于c# - 数据集在Winforms应用程序中在内存中保留多长时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7001720/

10-12 21:39
查看更多