2011-06-08 96 views
0

我在App.config文件中定義了ConnectionString,我檢查選項是否不包含敏感數據,以便密碼從連接字符串中排除。在應用程序代碼中我使用實體框架和我訪問DB這樣的:如何以編程方式將密碼分配給ConnectionString

using (var db = new Entities()) 
{     
    List<DATA> d = db.DATA.ToList(); 
} 

我想通過數據庫的密碼驗證用戶 - 用戶輸入其應用程序啓動時。 問題是,如何在代碼中手動處理ConnectionString時將此密碼添加到連接字符串中?

我的父親是這樣的:

ConnectionStringSettings conn = ConfigurationManager.ConnectionStrings["Entities"]; 
EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder(conn.ConnectionString); 
SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder(entityBuilder.ProviderConnectionString); 
sqlBuilder.Password = "pwd"; 
entityBuilder.ProviderConnectionString = sqlBuilder.ToString();    
ConnectionStringSettings newConn = new ConnectionStringSettings("Entities",entityBuilder.ConnectionString); 

但是,這仍然無法正常工作,我不能assing新的連接字符串ConfigurationManager.ConnectionStrings - 它說,這是隻讀值。如何克服這一點?

回答

3

您不能指定ConfigurationManager.ConnectionStrings,因爲它只反映了您的應用無法更改的App.config

但是你可以告訴EF要使用的連接字符串:

using (var db = new Entities(entityBuilder.ToString())) 
{     
    List<DATA> d = db.DATA.ToList(); 
} 
+0

感謝。我原本也這麼想,但是被框架生成的實體類沒有提供任何這樣的構造函數,現在我看到有一個基底DbContext類提供了一個被掩蓋的事實,這讓我感到困惑。任何想法爲什麼這可能是? – sherpa 2011-06-08 13:22:21

+0

那麼,我的派生類有這些構造函數,所以我不知道爲什麼你沒有看到它們。 – 2011-06-08 13:27:43

相關問題