c# - 将连接字符串放在 applicationSettings 中有什么问题吗?

标签 c# .net connection-string application-settings appsettings

<分区>

.NET 支持多种存储配置设置的方法已经有一段时间了,这导致了很多困惑。搜索 "Settings in C#" over on MSDN 的前三名没有帮助已有 10 年历史(这个古老网站上的许多 related questions [2] 也有 6-7 年历史)。很难确定哪些早期建议已被弃用。

在我的项目中,我选择使用 ApplicationSettings (相对于 AppSettings )因为:

  1. 这似乎是 current recommended approach on MSDN (和 here )。
  2. AppSettings元素 appears to be deprecated as of .NET 4+ *(主题是“不再可用”;但请参阅该页面上的“其他版本”。)[*尽管令人困惑,AppSettings 属性 is still supported ]
  3. 我更喜欢在设计器工具中编辑设置,而不是 xml 编辑器。
  4. 我更喜欢强类型设置。

但是,现在我需要决定将连接字符串放在哪里。关于 MSDN 的最新文档(和 here on SO ,以及 CP )似乎仍然建议使用 <connectionStrings>app.config .但是从代码访问它需要使用旧语法,我现在认为它与 appSettings 一起过时了。换句话说,阅读 app.config 的一部分是没有意义的。使用旧语法的文件:

ConfigurationManager.ConnectionStrings["MydDBConnName"];

和同一文件的另一部分 new语法:

Properties.Settings.Default.myOtherSetting;

另外,它使我无法在设计器中编辑字符串。

所以底线:有什么理由不在 ApplicationSettings 中标准化我的所有配置设置(包括连接字符串)?元素?

最佳答案

ConnectionStrings 部分不仅允许您在配置中定义连接字符串,还允许您选择提供者,因此您代码可以(理论上)使用 DbConnectionDbCommand 等的任何子类

然而,实际上,支持这种灵 active 意味着您必须使用提供者不可知的 SQL 语句(这意味着您不能做没有标准 SQL 语法的日期数学之类的事情),并且需要更多“管道”代码来创建正确类型的对象。你可以看到一些例子here .

如果您只支持一个数据库提供程序(SQL Server、Oracle、ODBC、OleDB),那么在字符串应用程序设置上使用 ConnectionStrings 并没有真正的好处。

关于c# - 将连接字符串放在 applicationSettings 中有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33638825/

相关文章:

c# - 在 .NET Xml 序列化中,是否可以使用基于属性值的不同标记对具有枚举属性的类进行序列化?

c# - 如何在 textBlock 上设置点击效果并打开一个新的 WPF 窗口?

c++ - 使用文字初始化 System::String^,但不使用 string::c_str() 或 char[]

entity-framework - Azure 管理门户中的 SQL Azure EF 数据库第一个连接字符串

c# - 网络上数据库的 SQL 连接字符串

c# - 等待最后的方法调用

c# - 单个SQL查询处理多个一对多关系,只输出一次结果

.NET WCF 服务引用使用服务器名称而不是 IP 地址,导致使用时出现问题

jquery - 未捕获的 TypeError : $(. ..).draggable 不是 ASP .NET MVC View 文件中的函数错误

.net - SQL Server 的两个管理员帐户