C# 如何在调试和发布模式下在WPF和DataSet中使用各种连接字符串?
我有很多CRUD应用程序是使用WPF和 我的连接字符串是:C# 如何在调试和发布模式下在WPF和DataSet中使用各种连接字符串?,c#,.net,wpf,connection-string,C#,.net,Wpf,Connection String,我有很多CRUD应用程序是使用WPF和 我的连接字符串是: <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> </configSections> <connectionStrings> <add name="Depboard.Properties.Settings.DepartmentConnec
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="Depboard.Properties.Settings.DepartmentConnectionString"
connectionString="ReleaseServer" providerName="System.Data.SqlClient" />
<add name="Debug"
connectionString="DebugServer" providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
此外,DataSet
默认使用“ReleaseServer”连接字符串
当我在Debug
和Release
模式之间切换时,我真的很害怕用连接字符串更改所有代码行
是否有一种简单的方法可以在不修改代码的情况下,在数据集
和程序中的调试
和发布
模式之间更改连接字符串?如果调试,如何使用
创建用于获取服务器名称的静态类:
public static class ServerName
{
#if DEBUG
const string SERVER = "DebugServer";
#else
const string SERVER = "ReleaseServer";
#endif
public static string Name => SERVER;
}
然后在初始化连接字符串时使用:
private static string ConnStr = ConfigurationManager.ConnectionStrings[ServerName.Name].ConnectionString;
然而,在我看来,这有点肮脏
应用程序实际上应该使用依赖项注入和可能的依赖项容器,以及诸如存储库模式之类的模式,以将所有初始化代码保持在一个位置(在适当的“接缝处”)。如果正确使用DI,则只有一个地方需要连接字符串。使用#如果调试
创建用于获取服务器名称的静态类:
public static class ServerName
{
#if DEBUG
const string SERVER = "DebugServer";
#else
const string SERVER = "ReleaseServer";
#endif
public static string Name => SERVER;
}
然后在初始化连接字符串时使用:
private static string ConnStr = ConfigurationManager.ConnectionStrings[ServerName.Name].ConnectionString;
然而,在我看来,这有点肮脏
应用程序实际上应该使用依赖项注入和可能的依赖项容器,以及诸如存储库模式之类的模式,以将所有初始化代码保持在一个位置(在适当的“接缝处”)。如果正确使用DI,那么只有一个地方需要连接字符串。使用配置转换如何?使用配置转换怎么样?谢谢关于数据集的内容是什么?它总是设置为一个“Depboard.Properties.Settings.DepartmentConnectionString”
,并且在我在app.config
文件中更改它之前,它不会更改。@对于app.config文件,您可以按照这里的说明进行操作:有更简单的解决方案吗?:)@steppup不是我所知道的:(谢谢!关于数据集
的内容是什么?它总是被设置为一个“Depboard.Properties.Settings.DepartmentConnectionString”
,并且它永远不会改变,直到我在app.config
文件中更改它为止。@app.config文件的升级,您可以按照这里的说明进行操作:有更简单的解决方案吗?:)@据我所知,别这么做(