前言
SqlSugar 是一款老牌的 .NET 开源 ORM 框架,性能高,功能全面,使用简单,支持 .NET FrameWork、.NET Core3.1、.NET5、.NET6、.NET7、.NET8、.NET9 等版本,线上论坛非常活跃,今天给大伙分享一个 .Net core Console 项目使用 SqlSugar 的详细例子。
Step By Step 步骤
-
创建一个 .NET Core Console 项目
-
安装 SqlSugarCore Nuget 包,当前使用的是
<PackageReference Include="SqlSugarCore" Version="5.1.4.69" />
-
在 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; });
-
新建数据层文件 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; } }
-
在 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); }
-
运行程序进行测试
结语
- SqlSugar 执行原生 SQL 的功能非常强大,如果不用它的 ORM 功能,完全可以当成一个 ADOHelper 使用,是 EF Core 的一个很好的补充,我个人一般就是这么使用的。
- SqlSugar 的 ORM 的性能也很不错,如果不喜欢 EF Core,用用 SqlSugar 的 ORM 也不错。
- 注意 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);
}
我是老杨,一个奋斗在一线的资深研发老鸟,让我们一起聊聊技术,聊聊人生。
都看到这了,求个点赞、关注、在看三连呗,感谢支持。