【问题标题】:Bring the data module to work with --- pass-Store-use a connection inside a reusable data module使用数据模块 --- pass-Store-use a connection inside a可重用的数据模块
【发布时间】:2010-09-29 00:59:53
【问题描述】:

我想将站点的数据模块分离成一个程序集(单个 dll 文件), 在处理 Web 应用程序时,get-store 并传递网站的 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. 这个策略好不好?你知道任何更好的方法或 常见的模式?

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

【问题讨论】:

  • 我的朋友,我检查了那个结构和我的结构之间真的没有什么区别,只是我使用静态是有原因的,我将 db 的名称传递给我的方法,另一方面 ENT.DAL 只是为其数据库使用静态名称(例如 Mydatabese )。另外,您编写的代码的问题总是很好。

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


【解决方案1】:

一些想法......

  1. 您不应该存储并挂在打开的数据库连接上。打开连接,进行数据库操作,然后立即关闭。应用晚获取,早发布的规则。

  2. 参见第 1 点。

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

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

http://www.codeplex.com/entlib

【讨论】:

  • 你是对的,我的朋友,但是,我定义的属性只是为了保留数据库的名称连接字符串,如果你看看我的代码,你就会明白我的想法。我立即打开和关闭,没错。关于EntLib,我相信它会帮助我,但我的时间非常有限。
  • 大约需要 30 分钟才能了解 entlib,这真的很简单。
  • 谢谢,我会去的,希望能找到与我的问题相关的东西。
  • 我的朋友,我检查了那个结构和我的结构之间真的没有什么区别,只是我使用静态是有原因的,我将 db 的名称传递给我的方法,另一方面 ENT.DAL 只是为其数据库使用静态名称(例如 Mydatabese )。而且总是找到问题是好的。你能吗?
猜你喜欢
  • 2017-01-28
  • 1970-01-01
  • 1970-01-01
  • 2023-01-30
  • 2020-08-30
  • 1970-01-01
  • 2011-03-16
  • 2020-04-12
  • 1970-01-01
相关资源
最近更新 更多