分享一个 .Net core Console 项目使用 SqlSugar 的详细例子

简介: 分享一个 .Net core Console 项目使用 SqlSugar 的详细例子

前言

SqlSugar 是一款老牌的 .NET 开源 ORM 框架,性能高,功能全面,使用简单,支持 .NET FrameWork、.NET Core3.1、.NET5、.NET6、.NET7、.NET8、.NET9 等版本,线上论坛非常活跃,今天给大伙分享一个 .Net core Console 项目使用 SqlSugar 的详细例子。

Step By Step 步骤

  1. 创建一个 .NET Core Console 项目
  2. 安装 SqlSugarCore Nuget 包,当前使用的是
<PackageReference Include="SqlSugarCore" Version="5.1.4.69" />

3.在 Program.cs 中注入 SqlSuger(留意注释

using SqlSugar;
ServiceCollection services = new ServiceCollection();
// 注入 单例 ISqlSugarClient
services.AddSingleton<ISqlSugarClient>(s =>
{
  SqlSugarScope sqlSugar = new SqlSugarScope(new ConnectionConfig()
  {
    DbType = SqlSugar.DbType.MySql,
    ConnectionString = "server=localhost;port=3306;user=root;password=db123456;database=testdb",
    IsAutoCloseConnection = true,
  }, db =>
  {
    // 单例参数配置,所有上下文生效,如果不需要可注释掉
    db.Aop.OnLogExecuting = (sql, pars) =>
    {
      // 在日志里打印 sql 语句
      logger.LogInformation(sql);
    };
  }
  );
  return sqlSugar;
});

4.新建数据层文件 DaoUtil.cs,写 CRUD 代码(留意注释

using SqlSugar;
class DaoUtil
{
  private readonly ISqlSugarClient db;
  // 构造方法注入 ISqlSugarClient
  public DaoUtil(ISqlSugarClient db)
  {
    this.db = db;
  }
  /// <summary>
  /// 增加数据
  /// </summary>
  /// <param name="entity"></param>
  /// <returns></returns>
  public int InsertData(deviceData entity)
  {
    var sql = @"INSERT INTO device_data (id,
            dev_type,
            dev_code,
            dev_name,
            item_name,
            item_xh,
            item_value,
            item_unit,
            item_alarm_level,
            deal_flag,
            create_time,
            create_by)
            VALUE (@id,
            @dev_type,
            @dev_code,
            @dev_name,
            @item_name,
            @item_xh,
            @item_value,
            @item_unit,
            @item_alarm_level,
            @deal_flag,
            @create_time,
            @create_by)";
    var parameters = new List<SugarParameter>(){
      new SugarParameter("@id",entity.id),
      new SugarParameter("@dev_type",entity.dev_type),
      new SugarParameter("@dev_code",entity.dev_code),
      new SugarParameter("@dev_name",entity.dev_name),
      new SugarParameter("@item_name",entity.item_name),
      new SugarParameter("@item_xh",entity.item_xh),
      new SugarParameter("@item_value",entity.item_value),
      new SugarParameter("@item_unit",entity.item_unit),
      new SugarParameter("@item_alarm_level",entity.item_alarm_level),
      new SugarParameter("@deal_flag",entity.deal_flag),
      new SugarParameter("@create_time",entity.create_time),
      new SugarParameter("@create_by",entity.create_by)
    };
    var result = db.Ado.ExecuteCommand(sql, parameters);
    return result;
  }
}

5.在 Program.cs 中注入 DaoUtil 类,调用 CRUD 方法

// 注入 DaoUtil 类
services.AddScoped<DaoUtil>();
// 调用 DaoUtil 的方法
using (var sp = services.BuildServiceProvider())
{
  var demo = sp.GetRequiredService<DaoUtil>();
  deviceData entity = new deviceData();
  demo.InsertData(entity);
}

6.运行程序进行测试

结语

  1. SqlSugar 执行原生 SQL 的功能非常强大,如果不用它的 ORM 功能,完全可以当成一个 ADOHelper 使用,是 EF Core 的一个很好的补充,我个人一般就是这么使用的。
  2. SqlSugar 的 ORM 的性能也很不错,如果不喜欢 EF Core,用用 SqlSugar 的 ORM 也不错。
  3. 注意 MySQL 参数在这里用的也是 @name 形式,而不是原生的 ? 符号

附录:完整的 Program.cs 代码

using SqlSugar;
ServiceCollection services = new ServiceCollection();
// 注入 单例 ISqlSugarClient
services.AddSingleton<ISqlSugarClient>(s =>
{
    SqlSugarScope sqlSugar = new SqlSugarScope(new ConnectionConfig()
    {
        DbType = SqlSugar.DbType.MySql,
        ConnectionString = "server=localhost;port=3306;user=root;password=db.server!hx@123;database=hospital",
        IsAutoCloseConnection = true,
    }, db =>
    {
        // 单例参数配置,所有上下文生效,如果不需要可注释掉
        db.Aop.OnLogExecuting = (sql, pars) =>
        {
            // 在日志里打印 sql 语句
            logger.LogInformation(sql);
        };
    }
    );
    return sqlSugar;
});
// 注入 DaoUtil 类
services.AddScoped<DaoUtil>();
// 调用 DaoUtil 的方法
using (var sp = services.BuildServiceProvider())
{
    var demo = sp.GetRequiredService<DaoUtil>();
    deviceData entity = new deviceData();
    demo.InsertData(entity);
}

我是老杨,一个奋斗在一线的资深研发老鸟,让我们一起聊聊技术,聊聊人生。

都看到这了,求个点赞、关注、在看三连呗,感谢支持。


相关文章
|
开发框架 前端开发 .NET
一个适用于 .NET 的开源整洁架构项目模板
一个适用于 .NET 的开源整洁架构项目模板
305 26
|
开发框架 安全 .NET
【Azure Developer】.NET Aspire 项目本地调试遇 Grpc.Core.RpcException 异常( Error starting gRPC call ... )
Error starting gRPC call. HttpRequestException: The SSL connection could not be established, see inner exception. AuthenticationException: The remote certificate is invalid because of errors in the certificate chain: UntrustedRoot
429 12
|
传感器 人工智能 机器人
D1net阅闻|OpenAI机器人项目招新 或自研传感器
D1net阅闻|OpenAI机器人项目招新 或自研传感器
|
开发框架 网络协议 .NET
C#/.NET/.NET Core优秀项目和框架2024年10月简报
C#/.NET/.NET Core优秀项目和框架2024年10月简报
461 3
|
开发框架 前端开发 API
C#/.NET/.NET Core优秀项目和框架2024年9月简报
C#/.NET/.NET Core优秀项目和框架2024年9月简报
372 1
|
开发框架 .NET C#
VSCode开发.net项目时调试无效
【9月更文挑战第22天】在使用 VSCode 开发 .NET 项目时遇到调试问题,可从项目配置、调试配置、调试器安装、运行环境、日志和错误信息等方面排查。确认项目类型及文件配置,检查 `launch.json` 文件及配置项,确保调试器扩展已安装并启用,验证 .NET 运行时版本和环境变量,查看 VSCode 输出窗口和项目日志文件,检查权限及代码错误。若问题仍未解决,可查阅官方文档或社区论坛。
829 5
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
本文讨论了在基于.NET 6和.NET Framework的WinForms项目中添加图表控件的不同方法。由于.NET 6的WinForms项目默认不包含Chart控件,可以通过NuGet包管理器安装如ScottPlot等图表插件。而对于基于.NET Framework的WinForms项目,Chart控件是默认存在的,也可以通过NuGet安装额外的图表插件,例如LiveCharts。文中提供了通过NuGet添加图表控件的步骤和截图说明。
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
|
存储 消息中间件 前端开发
.NET常见的几种项目架构模式,你知道几种?
.NET常见的几种项目架构模式,你知道几种?
440 0
|
边缘计算 开发框架 人工智能
C#/.NET/.NET Core优秀项目和框架2024年8月简报
C#/.NET/.NET Core优秀项目和框架2024年8月简报
311 0
|
Cloud Native API C#
.NET云原生应用实践(一):从搭建项目框架结构开始
.NET云原生应用实践(一):从搭建项目框架结构开始