首页 > 解决方案 > 覆盖 serenity 框架如何处理 [ConnectionKey] 属性

问题描述

Serenity 具有 class 属性ConnectionKey,允许您指定要使用的连接字符串的键。

下面的代码示例:

    [ConnectionKey("Default"), Module("Administration"), TableName("Languages")]
    [DisplayName("Languages"), InstanceName("Language")]
    [ReadPermission(PermissionKeys.Translation)]
    [ModifyPermission(PermissionKeys.Translation)]
    [LookupScript(typeof(Lookups.LanguageLookup))]
    public sealed class LanguageRow : Row, IIdRow, INameRow
    {
        [DisplayName("Id"), Identity]
        public Int32? Id
        {
            get { return Fields.Id[this]; }
            set { Fields.Id[this] = value; }
        }
    }

就我而言,我使用 AWS Secret Manager 来隐藏任何敏感信息,因此连接字符串本身不在我的 appsettings 中,而是在 AWS 密钥中。因此,当此代码被命中时,它会引发错误,因为密钥不是有效的连接字符串。

要获得实际的连接字符串,我首先需要向 AWS Secret Manager 发出请求。

在他们关于页面三分之一处的文档中,在SqlConnections.New 方法部分中,他们提到了如何指定我的 appsettings 中不存在的连接字符串。但是,我看不出如何将此解决方案应用于我的特定问题。

有没有办法覆盖 Serenity 如何处理此 ConnectionKey 或针对此问题的任何其他解决方法?

标签: c#asp.netserenity-platform

解决方案


Serenity 具有通过依赖注入注入的连接源。你可以在那里找到注射线。如果您想自己管理它,只需从启动中删除 AddSqlConnections 并手动添加实现 IConnectionStrings 接口的连接字符串源。

您可以使用默认的 IConnectionStrings 实现作为示例


推荐阅读