2012-03-03 67 views
3

我搜索了一段時間,但我無法找到具體的答案。隱藏資源中的App.config

在我當前的C#項目中,我有一個App.config文件,爲了讓我的EDM上下文找到數據庫連接。

我需要我的應用程序由一個.exe文件組成,但由於App.config會在我的.exe文件旁邊生成.exe.config,並且需要它才能正常運行。

有沒有辦法以編程方式爲我的數據庫上下文添加連接字符串,還是可以將App.config存儲在資源中?

如何將連接字符串傳遞給我的數據庫上下文?

+0

什麼樣的「EDM語境」你用它來訪問數據庫?如果您告訴我們,我們可以告訴您如何在沒有App.config的情況下配置它... – ChrFin 2012-03-03 14:14:27

+0

它由我使用的Models.edmx自動生成,我添加了一個ADO.NET實體數據模型。這是一個「公共部分類MyEntities:ObjectContext」,它有幾個ObjectSet 字段 – DarkDevine 2012-03-03 14:25:36

+1

這毫無意義。將設置存儲在app.exe.config中,以便輕鬆進行編輯,並允許程序在具有不同dbase服務器的另一臺計算機上工作。將其存儲在資源中可防止對其進行編輯。您也可以在源代碼中對其進行硬編碼。 – 2012-03-03 14:59:17

回答

-2

您可以保存和讀取設置像註冊所有先進的程序,而忘記的app.config,這是如何做到這一點:

public object GetRegistryValue(string KeyName, object DefaultValue) 
     { 
      object res = null; 
      try 
      { 
       Microsoft.VisualBasic.Devices.Computer c = new Microsoft.VisualBasic.Devices.Computer(); 
       Microsoft.Win32.RegistryKey k = c.Registry.CurrentUser.OpenSubKey("Software\\YourAppName", true); 
       if (k != null) 
       { 
        res = k.GetValue(KeyName, DefaultValue); 
       } 
       else 
       { 
        k = c.Registry.CurrentUser.CreateSubKey("Software\\YourAppName"); 
       } 
       if (k != null) 
        k.Close(); 
       // ex As Exception 
      } 
      catch 
      { 
       //PromptMsg(ex) 
      } 
      return res; 
     } 

public void SetRegistryValue(string KeyName, object _Value) 
     { 
      try 
      { 
       Microsoft.VisualBasic.Devices.Computer c = new Microsoft.VisualBasic.Devices.Computer(); 

       Microsoft.Win32.RegistryKey k = c.Registry.CurrentUser.OpenSubKey("Software\\YourAppName", true); 
       if (k != null) 
       { 
        k.SetValue(KeyName, _Value); 
       } 
       else 
       { 
        k = c.Registry.CurrentUser.CreateSubKey("Software\\YourAppName"); 
        k.SetValue(KeyName, _Value); 
       } 
       if (k != null) 
        k.Close(); 
       // ex As Exception 
      } 
      catch 
      { 
       //PromptMsg(ex) 
      } 
     } 
+0

對不起,我更新了我的問題,這不是關於我不知道如何或在哪裏存儲我的配置,更多關於我不想要的App.config,但不知道如何傳遞我的連接字符串否則 – DarkDevine 2012-03-03 16:28:40

+0

這是我的答案,您可以保存與SetRegistryValue註冊表中的連接,然後用GetRegistryValue讀取它以加載con到您的數據上下文 – 2012-03-03 16:40:29

+0

但是,如何將連接字符串傳遞給數據庫上下文? 我從某處讀取連接字符串,但之後會發生什麼?如何告訴我的上下文「在這裏,連接到服務器的這個字符串」 – DarkDevine 2012-03-03 16:42:30

0

最終阿門Ayach的最後評論指出我正確的解決方案

,而不是我的實例化ObjectContext的不帶參數,我只是從我的App.config通過連接字符串和我能夠刪除的App.config

而不是

Entities = new MyEntities(); 

我叫

Entities = new MyEntities("metadata=res://*/Models.csdl|res://*/Models.ssdl|res://*/Models.msl;provider=System.Data.SqlClient;provider connection string=\"data source=sql-server;initial catalog=initialDatabase;integrated security=True;pooling=False;multipleactiveresultsets=True;App=EntityFramework\""); 

的Visual Studio自動重載你的上下文類的構造函數它創建允許你通過一個連接字符串手動