赞
踩
1. 真正可以实现零SQL的ORM 建表、索引和CRUD全部支持
2. 支持 .NET 百万级大数据写入、更新、分表和拥有几十亿查询统计成熟解决方案
3. 支持 SAAS 完整应用 :跨库查询 、审计、租户分库 、租户分表 和 租户数据隔离
4. 支持低代码+工作流 (动态建类 、动态建表、无实体多库兼容CRUD 、 JSON TO SQL 、自定义XML等)
5. 支持ValueObject、鉴别器、仓储、UnitOfWork、DbContext、AOP
6. 支持 DbFirst、CodeFirst和WebFirst 3种模式开发
7. 简单易用、功能齐全、高性能、轻量级、服务齐全、官网教程文档、有专业技术支持一天18小时服务
8. 完美支持AOT:多种数据库
SqlSugar是一款专为.NET平台设计的轻量级ORM(对象关系映射)框架,由果糖大数据科技团队维护和更新。它提供了一种无缝的桥梁,将业务逻辑与数据库交互连接起来,使得开发者无需编写大量繁琐的SQL语句,即可完成数据的CRUD(创建、读取、更新和删除)操作。以下是对SqlSugar的详细介绍及其应用场景:
SqlSugar介绍
应用场景
SqlSugar适用于各种类型的应用场景,包括但不限于:
综上所述,SqlSugar凭借其高性能、高扩展性、多数据库支持以及简单易用的特点,在.NET开发领域具有广泛的应用前景。
//---------------------多库操作------------------------------
//主db
var db = new SqlSugarClient(new List<ConnectionConfig>()
{
new ConnectionConfig(){ConfigId="A",DbType=SqlSugar.DbType.SqlServer,ConnectionString="Database=netcoredev;Server=.;Integrated Security=false;User ID=sa;Password=1;",IsAutoCloseConnection=true},
new ConnectionConfig(){ConfigId="B",DbType=SqlSugar.DbType.SqlServer,ConnectionString="Database=netcoredevtest1;Server=.;Integrated Security=false;User ID=sa;Password=1;",IsAutoCloseConnection=true },
new ConnectionConfig(){ConfigId="C",DbType=SqlSugar.DbType.SqlServer,ConnectionString="Database=netcoredevtest2;Server=.;Integrated Security=false;User ID=sa;Password=1;",IsAutoCloseConnection=true }
});
//获取子Db
var childA = db.GetConnection("A");
var childB = db.GetConnection("B");
var childC = db.GetConnectionScope("C");//线程安全
//使用子Db用
var lsA = childA.Queryable<Sys_Log>().ToList();
var lsB = childB.Queryable<Sys_Log>().ToList();
var lsC = childC.Queryable<Sys_Log>().ToList();
//-----------------------------多库事务----------------------------
childA.CodeFirst.InitTables<Order>();
childB.CodeFirst.InitTables<Order>();
childC.CodeFirst.InitTables<Order>();
// 开启事务
try
{
db.BeginTran(); //不能是db.Ado.BeginTran
db.GetConnection("A").Insertable(new Order()
{
Id = 1,
CreateTime = DateTime.Now,
CustomId = 1,
Name = "a",
Price = 1
}).ExecuteCommand();
db.GetConnection("B").Insertable(new Order()
{
Id = 2,
CreateTime = DateTime.Now,
CustomId = 1,
Name = "a",
Price = 1
}).ExecuteCommand();
db.GetConnection("C").Insertable(new Order()
{
Id = 55,
CreateTime = DateTime.Now,
CustomId = 1,
Name = "a",
Price = 1
}).ExecuteCommand();
//提交事务
db.CommitTran(); //不能是db.ado.CommitTran
}
catch (Exception ex)
{
//回滚事务
db.RollbackTran();
}
public static void opCURD()
{
//创建数据库对象 (用法和EF Dappper一样通过new保证线程安全)
SqlSugarClient Db = new SqlSugarClient(new ConnectionConfig()
{
ConnectionString = "Data Source=.;Initial Catalog=netcoredev;Persist Security Info=True;User ID=sa;Password=1;Connect Timeout=500;",
DbType = DbType.SqlServer,
IsAutoCloseConnection = true
},
db =>
{
db.Aop.OnLogExecuting = (sql, pars) =>
{
//获取原生SQL推荐 5.1.4.63 性能OK
Console.WriteLine(UtilMethods.GetNativeSql(sql, pars));
//获取无参数化SQL 对性能有影响,特别大的SQL参数多的,调试使用
//Console.WriteLine(UtilMethods.GetSqlString(DbType.SqlServer,sql,pars))
};
//注意多租户 有几个设置几个
//db.GetConnection(i).Aop
});
//建库
Db.DbMaintenance.CreateDatabase();//达梦和Oracle不支持建库
//建表(看文档迁移)
Db.CodeFirst.InitTables<Student>(); //所有库都支持
//查询表的所有
var list = Db.Queryable<Student>().ToList();
//插入
Db.Insertable(new Student() { SchoolId = 1, Name = "jack" }).ExecuteCommand();
//更新
Db.Updateable(new Student() { Id = 1, SchoolId = 2, Name = "jack2" }).ExecuteCommand();
//删除
Db.Deleteable<Student>().Where(it => it.Id == 1).ExecuteCommand();
Console.WriteLine("恭喜你已经入门了,后面只需要用到什么查文档就可以了。");
Console.ReadKey();
}
海量数据操作ORM性能瓶颈在实体转换上面,并且不能使用常规的Sql去实现
当列越多转换越慢,SqlSugar将转换性能做到极致,并且采用数据库最佳API
操作数据库达到极限性能
大数据插入
|
大数据更新
|
大数据 : 插入或者更新
|
普通查询就行了性能超快
|
直接用分页删除就行了
|
winform中推荐用异步事件 async await
如果用同步方法要加Task.Run 不然会卡死UI
|
插入的列越多,越能体现性能
Db.Fastest.BulkCopy 比 EFCore.Bulkextension 快30% 插入的列的数量越多越强
Db.Fastest.BulkUpdate 是 EFCore.Bulkextension 2-3倍
SqlSugar>EFCore.Bulkextension>Dapper (ef plus & dapper plus 收费框架 未进行测试)
下面的方法支持复杂的Sql 、 返回多个结果集 、存储过程等 、可以理解为了一个高级DbHelper
|
方法名 | 描述 | 返回值 |
SqlQuery< T > | 查询所有返回实体集合 | List |
SqlQuery<T,T2> | 可以返回2个结果集 | Tuple<List, List> SQLITE(驱动)需要查询前面加上 this.Context.Ado.IsClearParameters=false; |
SqlQuerySingle | 查询第一条记录 | T |
SqlQuery<dynamic> | 查查询所有返回匿名对象 | dynamic |
GetDataTable | 查询所有 | DataTable |
GetDataReader | 读取DR需要手动释放DR | DataReader |
GetDataSetAll | 获取多个结果集 | DataSet |
ExecuteCommand | 返回受影响行数,一般用于增删改 | int |
GetScalar | 获取首行首列 | object |
GetString | 获取首行首列 | string |
GetInt | 获取首行首列 | int |
GetLong | 获取首行首列 | long |
GetDouble | 获取首行首列 | Double |
GetDecimal | 获取首行首列 | Decimal |
GetDateTime | 获取首行首列 | DateTime |
技巧:Sql中的关键词用@可以支持多库
|
GetDataTable
SqlQuery
增删 改可以用 ExecuteCommand
|
|
|
等同于Dapper中的 querymultiple
|
和Dapper中的2层集合的参数功能是一样的,SqlSugar中不用写SQL用法如下
|
特殊SQL批量
|
文档搜索你用的具体数据库 : SqlServer (表值)
文档搜索你用的具体数据库 : Oracle(表游标)
https://www.cnblogs.com/sunkaixuan/p/18206516
SqlQuery<T,T2,T3..>最多只能有7个,我们可以用db.Ado.GetDataSetAll拿出超过7个结果集
|
默认只支持匿名类作为参数,普通类参数是不支持的
如果想支持类作为参数可以自个封装个方法
代码如下:
|
SqlSugar 是一个简单而强大的 .NET ORM(对象关系映射)库,它专注于让开发者以更少的代码和更直观的方式来操作数据库。然而,SqlSugar 本身并不直接支持返回 DataSet 类型的数据。DataSet 是 ADO.NET 中的一个关键组件,用于在内存中缓存数据表及其关系。
尽管 SqlSugar 主要用于返回强类型化的数据集合(如 List<T>),但你可以通过结合使用 SqlSugar 的 Ado 功能与 ADO.NET 来实现返回 DataSet 的目的。Ado 功能允许你执行原始的 SQL 命令,并接收各种类型的数据,包括 DataSet。
以下是一个示例,展示了如何使用 SqlSugar 的 Ado 功能来执行 SQL 查询并返回一个 DataSet:
csharp复制代码
using SqlSugar; | |
using System; | |
using System.Data; | |
class Program | |
{ | |
static void Main(string[] args) | |
{ | |
// 假设你已经有一个 SqlSugarClient 实例 | |
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() | |
{ | |
ConnectionString = "你的数据库连接字符串", | |
DbType = DbType.SqlServer, // 根据你的数据库类型进行设置 | |
IsAutoCloseConnection = true, | |
InitKeyType = InitKeyType.Attribute | |
}); | |
// 使用 Ado 执行 SQL 查询并获取 DataSet | |
string sql = "SELECT * FROM YourTableName"; // 替换为你的 SQL 查询 | |
var parameters = new SqlSugarParameter[] { }; // 如果有参数,则在这里添加 | |
DataSet dataSet = db.Ado.GetDataSet(sql, parameters); | |
// 现在你可以像使用 ADO.NET 一样处理 DataSet 了 | |
if (dataSet != null && dataSet.Tables.Count > 0) | |
{ | |
DataTable table = dataSet.Tables[0]; | |
foreach (DataRow row in table.Rows) | |
{ | |
// 假设表中有名为 ColumnName 的列 | |
Console.WriteLine(row["ColumnName"].ToString()); | |
} | |
} | |
} | |
} |
请注意,上面的代码示例中,你需要将 "你的数据库连接字符串" 替换为你的实际数据库连接字符串,将 "YourTableName" 替换为你想要查询的数据库表名,并根据需要调整 SQL 查询和参数。
此外,尽管 SqlSugar 提供了丰富的功能来简化数据库操作,但在某些情况下,直接使用 ADO.NET 或其他数据访问技术可能会更灵活或更适合你的需求。
|
|
|
|
|
|
susgar中的single等同于EF中的SingleOrDefault
|
.First() 等同于C#中的 FirstOrDefault , 没有值返回 null
|
First() 等同于C#中的 FirstOrDefault , 没有值返回 null
|
|
|
|
is exists
|
单个字段
|
多个字段 (升级:5.1.4.67-preview04)
|
对象集合In like 升级:5.1.4.67
|
数组集全 in like :5.1.4.85
|
|
|
|
查询一条
|
|
|
|
|
生成的sql Select 不会有Files
|
db.SqlQueryable只支持简单查询的Sql不能是存储过程和一些特殊逻的Sql,复杂特殊SQL请看文档 【原生Sql】
注意: order by写外面
|
|
|
|
AddParameters 有很多重载
ISugarQueryable<T> AddParameters(object parameters);
ISugarQueryable<T> AddParameters(SugarParameter[] parameters);
ISugarQueryable<T> AddParameters(List<SugarParameter> parameters);
|
|
和Dapper中的Query<T,T2>效果一样,可以一维对象变成2维护的
|
效果图
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。