2012-03-03 90 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自动重载你的上下文类的构造函数它创建允许你通过一个连接字符串手动