VS 2010 中的多个存储过程

本文关键字:存储过程 2010 VS | 更新日期: 2023-09-27 18:33:10

我是Visual Studio 2010中使用C#的新手,所以我的知识相当有限。我希望制作一个在SQL Server 2008中运行和导出多个存储过程的程序 - 也有一个漂亮的界面。我不确定的是,如何最好地做到这一点?

我在想我想要一个可能带有树视图和数据网格视图的表单,然后执行存储过程。这仅适用于一个查询 - 但我的问题是如何在多个查询中最好地完成此操作?我不希望每个存储过程都有不同的数据网格视图(我有很多(。我希望能够在树视图中选择不同的存储过程,并更改数据网格视图中的数据,而不必每次都运行存储过程。其中一些非常耗时(> 1 分钟(。所以我想知道我问的是,我是否可以以某种方式将所有数据一次加载到我的程序中?我是否可以让数据集保存多个表,或者我是否必须以某种方式为所有存储过程创建不同的数据集?

VS 2010 中的多个存储过程

与其一次将所有数据加载到程序中,不如在第一次运行查询时缓存查询结果。 这使人们不必等待所有内容加载,以便他们可以查看一个数据集。

您目前描述的方案是,当您单击树视图中的特定项时,将运行相关的 SQL,并且结果集合将绑定到 datagridview,从而清除任何以前的数据。

缓存的做法插入了一个 get-if-i-don-don-was-now 层和一种存储方法。 像这样:

public class MyResultClass
{
    public string Column1 { get; set; }
    public string Column2 { get; set; }
}
private static readonly Dictionary<string, IEnumerable<MyResultClass>> 
    CachedResults = new Dictionary<string, IEnumerable<MyResultClass>>();
protected void OnTreeViewSelectionChanged(object sender, EventArgs e)
{
    // I'm not overly familar with the treeview off the top of my head,
    // so get selectedValue however you would normally.
    var selectedValue = ????;
    IEnumerable<MyResultClass> results;
    // Try to find the already cached results and if false, load them 
    if (!CachedResults.TryGet(selectedValue, out results))
    {
        // GetResults should use your current methodology for getting the results
        results = GetResults(selectedValue);
        CachedResults.Add(selectedValue, results);
    }
    myGridView.DataSource = results;
}

注意:如果这是一个 Web 应用程序而不是 winforms 应用程序,则需要使用 ConcurrentDictionary 而不是 Dictionary 来确保此模式线程的安全。