gpt4 book ai didi

asp.net-core - 有没有办法在启动时从 .net 核心数据库中可用的 JSON 设置初始化 c# 的设置模型?

转载 作者:行者123 更新时间:2023-12-04 10:58:37 24 4
gpt4 key购买 nike

我创建了一个 Web 应用程序,其中我使用 .net core 3.0 作为服务器端技术,并使用 Postgres 作为后端。我在数据库中有一个名为 settings 的表,我使用 Postgres 中可用的 JSON 数据类型将设置存储为 JSON。

现在我想从数据库中可用的 JSON 数据初始化应用程序中的设置模型。我想在应用程序开始时初始化模型,并在需要时在整个应用程序中使用它,以避免数据库往返以按需从数据库中获取设置。

有没有办法实现这一目标?

以下是数据库中的Json数据:

{
"CurrencyCode": "USD",
"CurrencySymbol": "$"
}

这是我在应用程序中的 C# 模型
public class SettingsModel
{
public string CurrencySymbol { get; set; }

public string CurrencyCode { get; set; }
}

我正在考虑通过以下方式实现这一目标,但仍然不知道什么以及如何使用它。

使用单例服务初始化模型
services.AddSingleton<SettingsModel, GetJsonSettingsFromDatabase()>();

GetJsonSettingsFromDatabase() 将设置从 DB 反序列化到 SettingsModel 后返回 SettingsModel 。

我还想要一些包含更新 SettingsModel 的逻辑的函数,这样当数据库表中的设置发生更改时我可以调用它。

最佳答案

使用单例服务初始化模型应该使用工厂委托(delegate)

例如。

services.AddSingleton<SettingsModel>(sp => return GetJsonSettingsFromDatabase());

假设

GetJsonSettingsFromDatabase() will return the SettingsModel after deserializing the settings from DB to SettingsModel.



对实例也可以这样做
SettingsModel settings = GetJsonSettingsFromDatabase();
services.AddSingleton(settings);

至于

I also wanted some function that will contain the logic for updating the SettingsModel so that I can invoke the same when there are changes in the database table for settings.



然后不要将其注册为单例。考虑缓存设置实例以避免往返,并且仅根据需要加载新实例。

关于asp.net-core - 有没有办法在启动时从 .net 核心数据库中可用的 JSON 设置初始化 c# 的设置模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58995007/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com