经常在功能中放置重复的代码?

时间:2010-12-18 15:37:54

标签: c# asp.net ado.net

我经常在OnClicks和OnLoads中使用此代码或此代码的一种形式:

 DataTable dt = new DataTable();
    using (SqlConnection con = new SqlConnection(conString))
    {
        using (SqlCommand cmd = new SqlCommand("administratorGetAll", con))
        {
            using (SqlDataAdapter da = new SqlDataAdapter(cmd))
            {
                da.Fill(dt);
            }
        }
    }

所以我想知道最小化这种大型重复的最佳方法是什么;功能

我目前正在尝试这样的事情:

 public void SqlStructGetAll(string storedProc, string connection)
{
    DataTable dt = new DataTable();
    using (SqlConnection con = new SqlConnection(connection))
    {
        using (SqlCommand cmd = new SqlCommand(storedProc, con))
        {
            using (SqlDataAdapter da = new SqlDataAdapter(cmd))
            {
                da.Fill(dt);
            }
        }
    }
}

但是我不确定我是否会离开这个。

2 个答案:

答案 0 :(得分:1)

有一些设计模式可以解决代码重复是主要问题的设计问题。

适用于您的场景的模式是来自Gang Of Four模式目录的模板方法设计模式。

您的方向正确 - 有关设计模式的详细信息,请参阅http://www.dofactory.com/Patterns/PatternTemplate.aspx

大多数现代框架为数据库处理等操作提供实用程序包装器和模板方法 - 您可以使用提供此类方法的Spring.NET。您可以查看此链接http://www.springframework.net/docs/1.3.0/reference/html/ado.html,例如模板方法,以便在Spring .NET中使用ADO.NET API

答案 1 :(得分:0)

通过将数据访问放在onclick和onload函数的代码隐藏中,您可以将数据访问层与表示层紧密耦合。如果您认为应该从每个函数中提取这类代码,那么您可能会更好地重新考虑您的体系结构。 Dan Wahlin有good example of building an n-layer application使用ADO.Net。你可能会从他的代码示例中得到一些好的想法,这可能对你将来有所帮助。

Creating an N-Layer ASP.NET Application - Video

Direct Code download