前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ABP框架学习之—— 设置管理

ABP框架学习之—— 设置管理

作者头像
易兒善
发布2018-08-21 15:35:16
6280
发布2018-08-21 15:35:16
举报
文章被收录于专栏:挖坑填坑挖坑填坑

前言

个人理解

abp这个设置管理时基于服务器缓存实现,使用得时string类型得键值对(建值都是string类型)。通过设置器(SettingProvider)注入,在站点启动时读取配置文件或者数据库或者自己生成一个(下面例子便是自己生成,服务器重启设置重置)。 这样的好处是不需要频繁的读取数据库或者本地文件,想想缓存的好处,同理可得。而且在此基础上abp还封装了些方法,使用方便。就是个人觉得配置起来有点麻烦。因为的键值对,所有建不能有重复,常常使用const 常量来定义建。

使用

提供设置

代码语言:javascript
复制
public class MySettingProvider : SettingProvider
{
    public override IEnumerable<SettingDefinition> GetSettingDefinitions(SettingDefinitionProviderContext context)
    {
        return new[]
                {
                    new SettingDefinition(
                        "SmtpServerAddress",
                        "127.0.0.1"
                        ),

                    new SettingDefinition(
                        "PassiveUsersCanNotLogin",
                        "true",
                        scopes: SettingScopes.Application | SettingScopes.Tenant
                        ),

                    new SettingDefinition(
                        "SiteColorPreference",
                        "red",
                        scopes: SettingScopes.User,
                        isVisibleToClients: true
                        )
                };
    }
}

注入设置

在CoreModule中得PreInitiali方法里注入,一般需要注入得内容都在这里注入。

代码语言:javascript
复制
Configuration.Settings.Providers.Add<MySettingProvider>();

服务端获取设置

SettingManager 在AbpServiceBase基类定义了得

代码语言:javascript
复制
var value1 = await SettingManager.GetSettingValueAsync<bool>("SmtpServerAddress");

客户端获取

如果SettingDefinition 中 IsVisibleToClients 设置为 true,就可以在客户端使用 javascript得到它的当前值。abp.setting 命名空间定义所需的函数和对象。

代码语言:javascript
复制
var currentColor = abp.setting.get("SmtpServerAddress");

修改设置

SettingManager 在AbpServiceBase基类定义了得

代码语言:javascript
复制
await SettingManager.ChangeSettingForApplicationAsync("SmtpServerAddress", "192.168.0.1");

小结

上面例子和官网提供得例子差异不大,省略了些东西。

如何读取本地配置文件,修改时并持续化到本地文件

abp的设置管理,是将配置放到了数据库中,不用手动创建记录,如上配置后,使用过程中自动创建。看表结构明白,可支持针对用户或者租户单独做配置。不支持文件类型的配置。

image.png

image.png

如何读取数据库数据,修改时持续化的数据库

同上,不支持自定义表实现的配置。

既然value字段是string类型,我们当然也可以将对象序列化成string存起来。使用时再序列化成对象。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.07.09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • 个人理解
    • 使用
      • 提供设置
        • 注入设置
          • 服务端获取设置
            • 客户端获取
              • 修改设置
              • 小结
                • 如何读取本地配置文件,修改时并持续化到本地文件
                  • 如何读取数据库数据,修改时持续化的数据库
                  相关产品与服务
                  数据库
                  云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档