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

发布于:2024-06-10 ⋅ 阅读:(142) ⋅ 点赞:(0)

image

前言

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);
}	

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

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


网站公告

今日签到

点亮在社区的每一天
去签到