分享一个 .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);
}

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

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


相关文章
|
8天前
|
开发框架 网络协议 .NET
C#/.NET/.NET Core优秀项目和框架2024年10月简报
C#/.NET/.NET Core优秀项目和框架2024年10月简报
|
1月前
|
开发框架 前端开发 API
C#/.NET/.NET Core优秀项目和框架2024年9月简报
C#/.NET/.NET Core优秀项目和框架2024年9月简报
|
2月前
|
开发框架 .NET C#
VSCode开发.net项目时调试无效
【9月更文挑战第22天】在使用 VSCode 开发 .NET 项目时遇到调试问题,可从项目配置、调试配置、调试器安装、运行环境、日志和错误信息等方面排查。确认项目类型及文件配置,检查 `launch.json` 文件及配置项,确保调试器扩展已安装并启用,验证 .NET 运行时版本和环境变量,查看 VSCode 输出窗口和项目日志文件,检查权限及代码错误。若问题仍未解决,可查阅官方文档或社区论坛。
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控件,该如何解决?
|
1月前
|
存储 消息中间件 前端开发
.NET常见的几种项目架构模式,你知道几种?
.NET常见的几种项目架构模式,你知道几种?
|
1月前
|
边缘计算 开发框架 人工智能
C#/.NET/.NET Core优秀项目和框架2024年8月简报
C#/.NET/.NET Core优秀项目和框架2024年8月简报
|
1月前
|
Cloud Native API C#
.NET云原生应用实践(一):从搭建项目框架结构开始
.NET云原生应用实践(一):从搭建项目框架结构开始
|
2月前
|
JSON 测试技术 C#
C#/.NET/.NET Core优秀项目框架推荐榜单
C#/.NET/.NET Core优秀项目框架推荐榜单
151 0
|
3月前
|
C# Windows 开发者
超越选择焦虑:深入解析WinForms、WPF与UWP——谁才是打造顶级.NET桌面应用的终极利器?从开发效率到视觉享受,全面解读三大框架优劣,助你精准匹配项目需求,构建完美桌面应用生态系统
【8月更文挑战第31天】.NET框架为开发者提供了多种桌面应用开发选项,包括WinForms、WPF和UWP。WinForms简单易用,适合快速开发基本应用;WPF提供强大的UI设计工具和丰富的视觉体验,支持XAML,易于实现复杂布局;UWP专为Windows 10设计,支持多设备,充分利用现代硬件特性。本文通过示例代码详细介绍这三种框架的特点,帮助读者根据项目需求做出明智选择。以下是各框架的简单示例代码,便于理解其基本用法。
166 0
|
3月前
|
Java Spring UED
Spring框架的异常处理秘籍:打造不败之身的应用!
【8月更文挑战第31天】在软件开发中,异常处理对应用的稳定性和健壮性至关重要。Spring框架提供了一套完善的异常处理机制,包括使用`@ExceptionHandler`注解和配置`@ControllerAdvice`。本文将详细介绍这两种方式,并通过示例代码展示其具体应用。`@ExceptionHandler`可用于控制器类中的方法,处理特定异常;而`@ControllerAdvice`则允许定义全局异常处理器,捕获多个控制器中的异常。
51 0