ASP.NET Core在启动过程中使用数据库实例的几种方式

  ASP.NET Core项目启动过程中若要调用SqlSugarClient实例操作数据库数据(假设操作函数如下),特此记录以下几种方式:

public class PublicDataBuffer
{
    public static List<EnvironmentRecord> DataBuffer = new List<EnvironmentRecord>();

    public static void InitDataBuffer(ISqlSugarClient dbClient)
    {
        DataBuffer.AddRange(dbClient.Queryable<EnvironmentRecord>().Select(r => new EnvironmentRecord()).ToPageList(1, 100).ToList());
    }
}

  1)如果是在SqlSugar数据库实例首次创建时调用操作函数,则在Program.cs文件的注册数据库服务的代码中调用即可。此时操作函数并未直接在启动过程中调用,而是在项目第一次操作数据库时调用。

builder.Services.AddSingleton<ISqlSugarClient>(s =>
{
    SqlSugarScope sqlSugar = new SqlSugarScope(new ConnectionConfig()
    {
        DbType = SqlSugar.DbType.SqlServer,
        ConnectionString = builder.Configuration.GetValue<string>("dbContext"),
        IsAutoCloseConnection = false,
    });

    PublicDataBuffer.InitDataBuffer(sqlSugar);

    return sqlSugar;
});

  2)直接在Program.cs中创建数据库实例,既用于注册单例服务,又用于操作函数调用。

SqlSugarScope sqlSugar = new SqlSugarScope(new ConnectionConfig()
{
    DbType = SqlSugar.DbType.SqlServer,
    ConnectionString = builder.Configuration.GetValue<string>("dbContext"),
    IsAutoCloseConnection = false,
});

uilder.Services.AddSingleton<ISqlSugarClient>(sqlSugar);
PublicDataBuffer.InitDataBuffer(sqlSugar);

  3)Program.cs中调用WebApplication的Services.GetService函数获取服务实例。

...
...
var app = builder.Build();
...
PublicDataBuffer.InitDataBuffer(app.Services.GetService<ISqlSugarClient>());
...
...

参考文献:
[1]https://blog.csdn.net/fromfire2/article/details/87348154
[2]https://blog.csdn.net/qq_41942413/article/details/134319869
[3]https://cloud.tencent.com/developer/article/2347045

相关推荐

  1. Hive小文件过多处理方式

    2024-07-22 02:02:02       44 阅读
  2. Qt 暂停程序方法

    2024-07-22 02:02:02       34 阅读
  3. 无人机应急救援应急方案

    2024-07-22 02:02:02       29 阅读
  4. Spring Boot 实现跨域方式

    2024-07-22 02:02:02       71 阅读
  5. css垂直水平居实现方式

    2024-07-22 02:02:02       66 阅读
  6. Spring实现策略模式方式

    2024-07-22 02:02:02       36 阅读
  7. Linux 设置一个程序开机启动方式

    2024-07-22 02:02:02       45 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 02:02:02       169 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 02:02:02       185 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 02:02:02       155 阅读
  4. Python语言-面向对象

    2024-07-22 02:02:02       169 阅读

热门阅读

  1. 中介子方程六十五

    2024-07-22 02:02:02       35 阅读
  2. linux命令

    2024-07-22 02:02:02       28 阅读
  3. 1186. 删除一次得到子数组最大和

    2024-07-22 02:02:02       34 阅读
  4. GPT-LLM

    GPT-LLM

    2024-07-22 02:02:02      35 阅读
  5. 【开源库学习】libodb库学习(二)

    2024-07-22 02:02:02       28 阅读
  6. Vue-Plugin-HiPrint 打印设计

    2024-07-22 02:02:02       30 阅读
  7. [AT_past202107_c] 入力チェック 题解

    2024-07-22 02:02:02       35 阅读
  8. c语言--使用共用体判断一个机器的大小端模式

    2024-07-22 02:02:02       34 阅读
  9. linux 安装 大模型ollama

    2024-07-22 02:02:02       35 阅读
  10. 349. 两个数组的交集

    2024-07-22 02:02:02       35 阅读