Dot-Net

.NET / LINQ-SQL / ASP.NET 中的連接字元串地獄

  • October 25, 2008

我有一個包含以下內容的 Web 應用程序:

  • 一個 Web 項目(帶有一個包含連接字元串的 web.config 文件 - 但在 Web 項目中沒有數據訪問程式碼)
  • 使用 LINQ-SQL 類向 Web 項目 UI 提供實體的數據訪問項目(該項目有一個設置文件和一個 app.config - 兩者都有連接字元串)

當我建構和部署時,Bin 目錄中沒有設置文件或 app.config 與數據訪問 .dll,但更改 web.config 文件中的連接字元串不會相應地更改數據庫 - 所以連接字元串必須被編譯成數據訪問dll。

我需要一個用於我的整個部署的配置文件——網站、數據訪問 dll、一切——它有一個可以使用的連接字元串。目前,似乎有多個連接字元串在各處被使用或硬編碼。

我如何最好地解決這個爛攤子?

謝謝你的幫助。

我從來沒有遇到過數據訪問層(DAL) 能夠使用我web.config文件中的連接字元串的問題。通常我只是從 DAL 複製連接字元串部分並將其粘貼到web.config. 我正在使用 DBML 設計器來創建數據上下文。

如果這對您不起作用,您可以在數據上下文建構子中指定連接字元串。在您的 Web 項目中有一個靜態類來載入您的設置,包括您的連接字元串,並且當您創建 DAL 對象(或數據上下文,如果直接創建它)時,只需將其傳遞給建構子。

public static class GlobalSettings
{
   private static string dalConnectionString;
   public static string DALConnectionString
   {
      get
      {
          if (dalConnectionString == null)
          {
             dalConnectionString = WebConfigurationManager
                                     .ConnectionStrings["DALConnectionString"]
                                       .ConnectionString;
          }
          return dalConnectionString;
      }
   }
}
...

using (var context = new DALDataContext(GlobalSettings.DALConnectionString))
{
  ...
}

引用自:https://stackoverflow.com/questions/236412