簡體   English   中英

指導需要ASP.Net app連接字符串

[英]Guidance needed ASP.Net app connection string

Net 2.0 / Visual Studio 2005 / ASP.Net Web應用程序

我在這個網站上閱讀了很多帖子和評論,但有些內容對我來說太難以理解,或者其他人不符合我的要求。

所以我有一個3層應用程序 - UI,BLL,DAL。 在我的DAL中,我通過來自Server Explorer的draggin storedprocedures創建了DataSet。 因此,連接字符串被硬編碼到數據集文件中。

我將非常感謝有人逐步解釋我必須做的事情,以便當我在UI(主項目)中將連接字符串傳遞給BLL然后再向下傳遞到DAL時。

如果可能的話,我會盡量避免拖放編碼。 如果你玩魔法過多,那么你就會被燒掉。

連接字符串應僅位於應用程序的一個位置。 如果所有層都與連接字符串有關,那么這是一個問題。 您DAL應該是唯一與連接字符串相關的層。

使DAL獲得連接字符串的一種好方法是通過IoC(控制反轉)。 這樣您就不必通過所有構造函數傳遞連接字符串。

DataSet有些過時了。 如果您正在使用新應用程序,則可以考慮使用ORM,例如NHibernate或Linq

我猜你的設計師在你拖動sp時會創建一個tableAdapter。 適配器上有一個Connection屬性,您可以為適配器設置該屬性以填充數據表。 我同意其他人的意見,你會想要在配置文件或存儲配置的其他地方的連接信息。 我也不喜歡拖放到設計器中,但這應該可以管理數據庫連接。

這是一個非常有趣的場景,因為我有時在我的多層應用程序中使用數據集,所以我之前已經完成了這個。 所以這是解決方案。

我假設除了UI之外,所有都是BLL,DAL的class-lib項目。 在DAL中,您將擁有數據集設計器,該設計器將連接字符串放在DAL類-lib prj的app.config下。 現在,如果你需要在DAL上面引用BAL,這也是class-lib prj,請從DAL的app.config復制connectionStrings部分並將其粘貼到BAL classlib prj的app.Config的connectionStrings部分。 在這里你必須注意到連接字符串名稱不僅僅是'myDataBaseConnStr'。 它將使用詳細的命名空間引用,如MyApp.DataLayer.DataSet.myDataBaseConnStr。 您應該使用UI層app.config或web.config執行相同的過程。 成功完成此操作后,您可以更改UI層應用程序[web.config或app.config]的根配置文件中的connectionString。 這樣它總是從UI層獲取connectionString,因為那是運行時正在執行的AppDomain。 因此,您可以在那里更改連接字符串,並將其反映在基礎BAL和DAL中。

謝謝。

我們這樣做的方法是在我們的web.config文件中包含連接字符串(app.config也可以)。 例:

<add key="ConnectionString" value="Data Source=localhost;Initial Catalog=MyDatabase;User ID=username;Password=abc123"/>

然后,在DAL中我們使用類似的東西:

using (var connection = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"])) {
    using (var command = new SqlDataAdapter("MyStoredProc", connection)) {
        command.SelectCommand.CommandType = CommandType.StoredProcedure;
        var categories = new DataSet();
        command.Fill(categories);
        return categories;
    }
}

您可以使用ConfigurationManager.AppSettings [“Whatever”]從.config文件中提取“Whatever”指定的值。 非常方便,非常適合在開發,測試和生產環境之間切換。

您可以添加一個名為connectionStrings的web.config特殊部分。 您添加到web.config:

  <connectionStrings>
    <add name="oracle" connectionString="Data Source=server; User ID=user; Password=password;"/>
  </connectionStrings>

然后在你的C#代碼中:

string connString = ConfigurationManager.ConnectionStrings["oracle"].ConnectionString;

我知道它比第一個例子稍微復雜一點,但它有助於保持配置文件的組織,特別是當這個文件變得越來越復雜時,你將學會重視這個connectionStrings部分。

祝好運!

里卡多。

最后,我的問題是:有沒有辦法覆蓋在運行時在DAL項目設置設計器中設置的連接字符串? ..因此,DAL中的數據集可以將此連接字符串用於表適配器。

我在另一篇文章中讀到,如果你在主項目的設置中有相同名稱的屬性(如在DLL中),則子項目(DLL)會獲取該屬性的值,而不是為其設置的值。在它自己的設置。

任何例子如何做到這一點?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM