2012-01-23 50 views
2

我試圖使用實體框架,它把它的連接字符串放到app.config中。我想將它移到代碼中,因爲在這個開發階段對我來說更容易。將連接字符串從app.config移動到C#代碼#

metadata=res://*/database.csdl|res://*/database.ssdl|res://*/database.msl;provider=System.Data.SqlClient;provider connection string="data source=computer;initial catalog=database;persist security info=True;user id=user;[email protected];multipleactiveresultsets=True;App=EntityFramework"

我如何可以從代碼實體框架使用的連接字符串,而再看看app.config?或者,如果這是不可能的我怎麼能通過參數app.config(如dbname,dbuser, dbpassword)?

+6

「我想將它移動到代碼中,因爲在這個開發階段對我來說更容易。」 - 這比在app.config中更容易嗎?讓我懷疑你想回答的真正問題不是你問的問題。 –

+0

我想將其部署到用戶,並且不希望密碼/登錄存儲在app.config中。在實體框架之前,我在代碼中對此進行了嚴格的編碼。可能不是最好的解決方案,但在這個階段,我只是不想在app.config中有數據庫的開放文本登錄/密碼。所以要麼我必須以某種方式傳遞參數或硬編碼連接字符串。 – MadBoy

+0

@MitchWheat @MitchWheat這是一種方式,但這意味着我必須觸及數據庫安全性,而且我基本上提供了一個用戶使用SQL Management Studio訪問數據庫的能力,如果他願意,可以直接進入數據庫峯值(可能他們不會這樣做,因爲他們不會不知道如何,但仍然)。 – MadBoy

回答

2

當您創建ObjectContext派生類的實例時,只需將連接字符串作爲構造函數參數傳遞即可。

+0

不錯,爲什麼我沒有想過:-) – MadBoy

0

而不是使用用戶名和密碼,爲什麼不使用集成安全性?它更安全,更易於管理。

即連接字符串中的'Trusted_Connection = Yes',並通過AD安全地管理訪問。

Connection Strings

4

您可以使用EntityConnectionStringBuilder用於此目的。 Check here

public string GetConnectionString() 
    { 
     string connectionString = new EntityConnectionStringBuilder 
     { 
      Metadata = "res://*/Data.System.csdl|res://*/Data.System.ssdl|res://*/Data.System.msl", 
      Provider = "System.Data.SqlClient", 
      ProviderConnectionString = new SqlConnectionStringBuilder 
      { 
       InitialCatalog = ConfigurationManager.AppSettings["SystemDBName"], 
       DataSource = ConfigurationManager.AppSettings["SystemDBServerName"], 
       IntegratedSecurity = false, 
       UserID = ConfigurationManager.AppSettings["SystemDBUsername"], 
       Password = ConfigurationManager.AppSettings["SystemDBPassword"], 
       MultipleActiveResultSets = true, 
      }.ConnectionString 
     }.ConnectionString; 

     return connectionString; 
    } 
+1

謝謝。這與丹尼爾的答案是我需要的。我會接受丹尼爾斯回答我的問題,但沒有他的答案不完整。 – MadBoy

0

首先,創建使用帶有的connectionString參數的構造你的背景。 http://msdn.microsoft.com/en-us/library/gg679467(v=vs.103).aspx

請注意,它不是您必須調用的此構造函數,而是您的實體生成器爲您創建的數據庫的特定繼承上下文構造函數。 http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnectionstringbuilder.aspx

在這裏看到:

此外,如果你想通過在運行時的用戶名和密碼,就可以使用這個類來創建一個連接字符串 http://msdn.microsoft.com/en-us/library/bb738533.aspx

0

如果在連接字符串日誌中詳細信息總是相同的,那麼我會建議你使用ConfigurationManager從你的app.config中檢索連接字符串並加密文件的ConnectionStrings部分。

相關問題