none
EF 的連線字串中密碼如何自訂? RRS feed

  • 問題

  • 在EF中我要使用SQL Server的帳號/密碼驗證﹐但又不想把密碼明碼寫在設定檔中。

    在實體資料模型精靈中選擇了資料連線﹐然後選擇了「否﹐從連接字串排除敏感性資料﹐我會在應用程式程式碼中設定這項資訊」
    請問這要在程式碼中那裏給予密碼呢?

    是在EF產生的Model的建構式中做修改嗎?要怎麼改?一直沒找到範例程式﹐幫忙解惑一下。

            #region 建構函式
    
            /// <summary>
            /// 使用在應用程式組態檔的 'NorthwindEntities' 區段中找到的連接字串,初始化新的 NorthwindEntities 物件。
            /// </summary>
            public NorthwindEntities() : base("name=NorthwindEntities", "NorthwindEntities") {
                this.ContextOptions.LazyLoadingEnabled = true;
    
                OnContextCreated();
            }
    
            /// <summary>
            /// 初始化新的 NorthwindEntities 物件。
            /// </summary>
            public NorthwindEntities(string connectionString) : base(connectionString, "NorthwindEntities") {
                this.ContextOptions.LazyLoadingEnabled = true;
                OnContextCreated();
            }
    
            /// <summary>
            /// 初始化新的 NorthwindEntities 物件。
            /// </summary>
            public NorthwindEntities(EntityConnection connection) : base(connection, "NorthwindEntities") {
                this.ContextOptions.LazyLoadingEnabled = true;
                OnContextCreated();
            }
    
            #endregion

    2015年1月16日 上午 06:57

解答

  • 你貼的程式碼不就有一個建構式是用 connection string 建構物件的嗎 ...

        /// <summary>
            /// 初始化新的 NorthwindEntities 物件。
            /// </summary>
            public NorthwindEntities(string connectionString) : base(connectionString, "NorthwindEntities") {
                this.ContextOptions.LazyLoadingEnabled = true;
                OnContextCreated();
            }
    


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2015年1月17日 上午 06:41
    版主
  • 不好意思弄錯了, 參考這一篇比較清楚, 您可以把Integrated Security=true, 改成user id=帳號;pwd=密碼, 即可, 請參考:Changing Databases at Run-time using Entity Framework

    2015年1月17日 上午 08:14

所有回覆

  • this 謝謝你的提供。

    不好意思﹐看了之後還是不明瞭﹐那個範例看起來好像和 MSDN 上的 HOW TO:建立 EntityConnection 連接字串 這一篇很像﹐但我還是不明白。

    我的問題是﹐在實體資料模型精靈執行後﹐在web.config中的<connectionStrings>節段中VS已經自動加入了一個資料連線設定﹐這個連線設定中不包含密碼。

    我要使用這個連線設定﹐在程式中該如何給予密碼呢?

    我猜測是要從建構式中下手﹐但不知道要如何寫。

    2015年1月16日 下午 05:27
  • 你貼的程式碼不就有一個建構式是用 connection string 建構物件的嗎 ...

        /// <summary>
            /// 初始化新的 NorthwindEntities 物件。
            /// </summary>
            public NorthwindEntities(string connectionString) : base(connectionString, "NorthwindEntities") {
                this.ContextOptions.LazyLoadingEnabled = true;
                OnContextCreated();
            }
    


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2015年1月17日 上午 06:41
    版主
  • 不好意思弄錯了, 參考這一篇比較清楚, 您可以把Integrated Security=true, 改成user id=帳號;pwd=密碼, 即可, 請參考:Changing Databases at Run-time using Entity Framework

    2015年1月17日 上午 08:14
  • 我想了很久﹐應該是了解了。

    主要應該是被實體資料模型精靈產生的連線設定給迷惑了﹐自動產生的連線設定很長﹐之前一直沒注意到整個連線字串中包含了一段provider connection string=&quot;data source=........;App=EntityFramework&quot;

    因此在使用建構式時﹐所傳入的 connectionString 這個參數值就是指provider connection string的值﹐並不是整個connectionString 的值﹐原來一直都誤解了....

        /// <summary>
        /// 初始化新的 NorthwindEntities 物件。
        /// </summary>
        public NorthwindEntities(string connectionString) : base(connectionString, "NorthwindEntities") {
                this.ContextOptions.LazyLoadingEnabled = true;
                OnContextCreated();
            }

    2015年1月17日 下午 05:11