DB 中的 AppSettings 而不是 App.Config

Posted

技术标签:

【中文标题】DB 中的 AppSettings 而不是 App.Config【英文标题】:AppSettings in DB instead of App.Config 【发布时间】:2018-11-09 01:44:10 【问题描述】:

更新的问题更清晰: 如何加载存储在特定于环境的 DB 中的应用程序设置(具有值 O、T、A、P 的列)和特定业务应用程序实例。 示例:我来自 A 公司,我当前的实例应该只有 A 的所有条目/数据引用和 A 的特定环境设置。

我正在创建的应用程序内部几乎没有应用程序实例。 它类似于工资管理工具,但该工具旨在并行处理多个实例。 这么多公司可以配置那里的系统并并行使用它。

它包括用于设置各种实体的 UI 和用于 CRUD 的 Soap。 我希望你们都清楚上下文。

问题是: 可能有很多配置细节,性质相似,但业务实例不同。

所以我打算将设置存储在数据库表 "AppSettings" 中。 它将具有来自业务实例的外键,以便在获取时仅获取该特定实例的设置。

我的关注和实际问题: 我们有 OTAP(本地、测试、验收、生产),都有不同的设置值。 所以在每个环境中我都必须查询特定的环境进行设置。

这听起来不是最佳解决方案。 任何建议或投注解决方案将不胜感激。

【问题讨论】:

我假设您对于不同的环境也有不同的数据库(实例)?那么我认为这不是问题吗?您为每个不同的环境交换连接字符串,它会得到正确的数据库 nope.. 一个数据库实例,因为这个工具在数据库上不是很大.. 我们有应用程序表,其中包含应用程序实例详细信息.. 这个应用程序表在任何地方都被引用.. @RTWorkSpace 有什么问题?只需编写一个适当的查询来加载您想要的环境的设置。问题不清楚,并且在句子中间加上多个点会使 更难 理解你在问什么 @RTWorkSpace 也许真正的问题不是如何读取特定环境的设置,而是重新组织代码以便它可以在多个环境中工作?也许让它在加载配置设置后关心环境? 这称为多租户。此数据库中的数据之间是否存在任何串扰?如果没有,就在不同的数据库中创建不同的租户 【参考方案1】:

回答你的问题:

select * from AppSettings where businessinstance = x and environemt = 'Test'

表定义:

ID (int auto increment) // 可选 业务实例(PK、FK int) 键(PK 唯一约束,字符串) 值(字符串) 环境(PK 字符串/整数)

businessInstance、key 和 environment 应该是唯一约束。 所以像这样创建PK。并且有一个ID可以轻松更新

【讨论】:

以上是关于DB 中的 AppSettings 而不是 App.Config的主要内容,如果未能解决你的问题,请参考以下文章

C#/ ASP.Net:app.settings而不是web.config

vb.net 2.0 如何用Configuration.ConfigurationSettings.AppSettings读取配置文件中的内容?

使用链接文件的 App 或 Web Config 中的 AppSettings

加密 App.Config 文件的 appsettings 部分中的单个密钥

为啥我在 App.config 中的 AppSettings 更改没有在运行时考虑? (控制台应用程序)

链接 DB App.config 解析