我已经搜索了一段时间,但我找不到具体的答案。
在我目前的C#项目中,我需要一个App.config文件,以便我的EDM上下文找到数据库连接。
我需要将我的应用程序包含在单个.exe文件中,但由于App.config,它会生成.exe文件旁边的.exe.config并要求它才能正常运行。< / p>
有没有办法以编程方式为我的数据库上下文添加连接字符串,还是可以将App.config存储在资源中?
如何将连接字符串传递给我的数据库上下文?
答案 0 :(得分:0)
最后Amen 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会自动重载它创建的上下文类的构造函数,允许您手动传递连接字符串
答案 1 :(得分:-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)
}
}