使数据模块工作--- pass-Store-在可重用数据模块中使用连接

时间:2008-12-31 16:49:05

标签: asp.net data-access state-management

我想将站点的数据模块分成一个程序集(单个dll文件), 在处理Web应用程序时,获取存储并传递网站的 ConnectionString 的最佳方法是什么? 在数据程序集内部,我创建了一个名为ConnectionManager的静态类。它有一个名为 DatabaseConnectionName 的属性,我想传递并存储Web.Config文件中的连接名称。 在这个策略中,我决定获取名称,并在Global.asax文件的网站加载时间内建立连接,并在我之前提到的属性(DatabaseConnectionName)中进行连接。 但是,这只是我使用的策略,我不知道做这项工作的常见模式是什么。

部分代码: ==================================== = [------------ Global.asax ------------]

the code in the site that makes the Data module accessible for the site
    void Application_Start(object sender, EventArgs e) 
    {
         OurCompany.Data.ConnectionManager.DatabaseConnectionName = "MasterConnection";
    }

[------------ ConnectionManager类 ------------] 这是在除站点之外的数据模块中

public static class ConnectionManager
{

    public static SqlConnection  GetMasterConnection()
    {
        string connectionString = ConfigurationManager.ConnectionStrings[**DatabaseConnectionName**].ConnectionString;
        SqlConnection conn;     
        //conn.Open();
        conn = new SqlConnection(connectionString);
        return  conn;
    }

    private static string **databaseConnectionName**;
    public static string DatabaseConnectionName
    {
        get
        {
            return databaseConnectionName;
        }
        set
        {
            databaseConnectionName = value;
        }
    }

== END ============================================ ===============

---问题是:---

  1. 存储连接的位置? (这是ConnectionManager类中的一个属性, theCompany.Data.ConnectionManager.DatabaseConnectionName)

  2. 进行此连接时? (此处为Global.asax应用程序加载时间)

  3. 哪种方法最适合存储此类信息   :SessionState或ViewState或简单属性

  4. 这个策略好吗?你知道更好的方式吗?  这个的常见模式?

  5. 感谢您提供任何信息 - MHM -

1 个答案:

答案 0 :(得分:0)

一些想法......

  1. 您不应该存储和挂起到打开的数据库连接。打开连接,执行数据库操作,然后立即关闭。适用收购规则,提前释放。

  2. 见第1点。

  3. 不要将数据库连接存储在会话状态中。再看一点。如果您的意思是连接字符串,那么只需在需要时从配置管理器中读取它。它已经为你缓存了,不要重新发明或包裹轮子。

  4. 我建议你看看企业库的模式和实践,它们抽象出许多管理数据访问的常见模式:

  5. http://www.codeplex.com/entlib