【问题标题】:Global ConnectionString not being initialized全局 ConnectionString 未初始化
【发布时间】:2011-07-20 03:49:58
【问题描述】:

我的连接字符串存储在myGlobals.cs 页面中,如下所示:

/* Connection String */
public static string conString
{
    get { return _conString; }
    set { _conString = ConfigurationManager.ConnectionStrings["BaseConnectionString"].ToString(); }
}

我的代码设置在 4 层架构中。所以我有一个业务对象文件夹、业务访问层和数据访问层。如果我将连接字符串移动到 DAL 结构中,它可以正常工作。否则我会收到此错误:

The ConnectionString property has not been initialized

myGlobals.cs 类是不是在这一切之前没有被包含,还是需要改变?

这是我的数据访问层:

public DataTable Load()
    {
        SqlConnection conn = new SqlConnection(MyGlobals.conString);
        SqlDataAdapter dAd = new SqlDataAdapter("administratorGetAll", conn);
        dAd.SelectCommand.CommandType = CommandType.StoredProcedure;
        DataSet dSet = new DataSet();
        try
        {
            dAd.Fill(dSet, "AdministratorsTable");
            return dSet.Tables["AdministratorsTable"];
        }
        catch
        {
            throw;
        }
        finally
        {
            dSet.Dispose();
            dAd.Dispose();
            conn.Close();
            conn.Dispose();
        }
    }

【问题讨论】:

  • 您只是在设置连接字符串时设置它。所以它永远不会初始化,除非你设置它(在这种情况下,你忽略它被设置的值......)

标签: c# asp.net connection-string data-access-layer


【解决方案1】:

属性“setter”不会被自动调用;当您将属性放在赋值的左侧时,它的代码就会被执行 - MyClass.MyProperty = "new value";

你想这样做:

public static string conString 
{     
    get { return ConfigurationManager.ConnectionStrings["BaseConnectionString"]; }
} 

【讨论】:

  • 啊,我知道这很简单。非常感谢!
猜你喜欢
  • 2019-12-10
  • 1970-01-01
  • 1970-01-01
  • 2023-01-11
  • 1970-01-01
  • 2011-10-13
相关资源
最近更新 更多