【发布时间】:2011-10-23 12:33:00
【问题描述】:
我有一个关于 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 文件也是如此所需的表是个好主意吗?
【问题讨论】:
-
请创建单独的问题。否则你的问题对社区没有那么有用,因为它变得更难搜索。
标签: c# winforms caching dataset