系列文章目录
🎀🎀🎀 .NET开源 ORM 框架 SqlSugar 系列 🎀🎀🎀
文章目录
- 系列文章目录
- 一、前言 🍃
- 二、用法介绍
- 三、方法列表
- 四、使用案例
- 五、调用存储过程
- 六、in参数用法
- 七、SqlServer带Go的脚本处理
- 八、查询2个结果集
- 九、集合参数批量操作
- 十、表值参数、游标参数
- 十一、DataSet转List<类>
- 十二、类作为参数
- 🎀🎀🎀 .NET开源 ORM 框架 SqlSugar 系列 🎀🎀🎀
一、前言 🍃
下面的方法支持复杂的Sql 、 返回多个结果集 、存储过程等 、可以理解为了一个高级DbHelper。
二、用法介绍
//调用Sql
db.Ado.具体方法
//调用存储过程
db.Ado.UseStoredProcedure().具体方法
三、方法列表
四、使用案例
✨技巧:Sql
中的关键词用 @
可以支持多库
//无参数
var dt=db.Ado.GetDataTable(sql) //上面列表中 SqlQuery 等方法都可以不一定是GetDataTable
//参数1:简化用法
var dt=db.Ado.GetDataTable("select * from table where id=@id and name like @name",
new{id=1,name="%"+jack+"%"});
//参数2:复杂用法
var dt=db.Ado.GetDataTable("select * from table where id=@id and name like @name",
new List<SugarParameter>(){
new SugarParameter("@id",1),
new SugarParameter("@name","%"+jack+"%") //执行sql语句
});
//参数3:结合用法
var pars =db.Ado.GetParameters(new{p=1,p2=p});
pars[1].DbType=System.Data.DbType.Date;
var dt=db.Ado.GetDataTable(sql,pars)
//原生SQL用实体 sql 查询
List<ClassA> t=db.Ado.SqlQuery<ClassA>(sql);//比db.SqlQueryable兼容性更强,支持复杂SQL存储过程,缺点没有自带的分页操作
//原生SQL用匿名对象 sql 查询
List<dynamic> t=db.Ado.SqlQuery<dynamic>(sql);
//插入 更新操作一般用
db.Ado.ExecuteCommand(sql);
//db.Ado.xxx 还有更多方法看文档最下面
Sql 查询用:
GetDataTable
SqlQuery
Sql 增删改用:
- 增删改可以用
ExecuteCommand
五、调用存储过程
//简单用法
var dt = db.Ado.UseStoredProcedure().GetDataTable("sp_school",new{name="张三",age=0});
//带有output的存储过程
var nameP= new SugarParameter("@name", "张三");
var ageP= new SugarParameter("@age", null, true);//设置为output
var dt = db.Ado.UseStoredProcedure().GetDataTable("sp_school",nameP,ageP);//返回dt
var list = db.Ado.UseStoredProcedure().SqlQuery<Class1>("sp_school",nameP,ageP);//返回List
//更多返回方法 看文档最下面
//ageP.Value可以拿到output值
//SqlSever Datatable参数 看文档 SqlServer 中有介绍
//Oracle 游标参数用法 Blob类型 Clob类型 看文档 Oracle中有介绍
//如果是ReturnValue
var nameP=new SugarParameter("@name", "张三", typeof(string),ParameterDirection.ReturnValue);
//我们还可以用 GetParameters 来简化参数操作
SugarParameter [] pars =db.Ado.GetParameters(new{p=1,p2=p});
pars[1].Direction=ParameterDirection.Output;
六、in参数用法
var dt = db.Ado.SqlQuery<Order>(
"select * from [order] where id in(@ids)",
new { ids = new int[] { 1,2,3 } }); //是个数组不是字符串
// new SugarParamter("@ids",int[] { 1,2,3})
//select * from [order] where id in('1','2','3')
七、SqlServer带Go的脚本处理
db.Ado.ExecuteCommandWithGo(sql) //go语句是独立一行就支持
八、查询2个结果集
等同于 Dapper
中的 querymultiple
var views=db.SqlQuery<T,T2>("select * from t; select * from t2");//多实体
var t1list=views.Item1;
var t2list=views.Item2;
九、集合参数批量操作
和 Dapper
中的2层集合的参数功能是一样的,SqlSugar
中不用写 SQL
用法如下:
//删除
List<Dictionary<string,object>> list= new List<Dictionary<string,object>>;
list.Add(字典);//只需要条件列
db.Deleteable<object>().AS("[Order]").WhereColumns(list).ExecuteCommand();
//插入
List<Dictionary<string,object>> list= new List<Dictionary<string,object>>;
list.Add(字典)//插入所有要的所有列
db.Insertable(list).AS("student").ExecuteCommand();
//更新
List<Dictionary<string,object>> list= new List<Dictionary<string,object>>;
list.Add(字典)//更新和条件所需要的所有列
var t66 = db.Updateable(list).AS("student").WhereColumns("id").ExecuteCommand();
特殊SQL批量
//5.0.6.3
using (db.Ado.OpenAlways()) { //开启长连接
foreach(var pars in List<parameter[]>)
{
db.Ado.ExecuteCommand(sql,paras);
}
}
十、表值参数、游标参数
- 文档搜索你用的具体数据库 : SqlServer (表值)
- 文档搜索你用的具体数据库 : Oracle(表游标)
十一、DataSet转List<类>
SqlQuery<T,T2,T3..>
最多只能有 7
个,我们可以用 db.Ado.GetDataSetAll
拿出超过 7
个结果集。
var datables=ds.Tables.Cast<DataTable>().ToList();
foreach (var item in tables)
{
var list = db.Utilities.DataTableToList<Order>(item);
}
十二、类作为参数
默认只支持匿名类作为参数,普通类参数是不支持的。
如果想支持类作为参数可以自个封装个方法。
代码如下:
var pars=new {id=1;name="a"};//默认支持匿名类
//普通类作为参数最大问题 会把所有属性都变成参数 ,匿名类型就不存在这个问题
var obj = new Order(){ ....} ;//类对象
SugarParameter[] pars=obj.GetType().GetProperties()
.Select(it => new SugarParameter(it.Name, it.GetValue(obj))).ToArray();
🎀🎀🎀 .NET开源 ORM 框架 SqlSugar 系列 🎀🎀🎀
【开篇】.NET开源 ORM 框架 SqlSugar 系列
【入门必看】.NET开源 ORM 框架 SqlSugar 系列
【实体配置】.NET开源 ORM 框架 SqlSugar 系列
【Db First】.NET开源 ORM 框架 SqlSugar 系列
【Code First】.NET开源 ORM 框架 SqlSugar 系列
【数据事务】.NET开源 ORM 框架 SqlSugar 系列
【连接池】.NET开源 ORM 框架 SqlSugar 系列
【查询目录】.NET开源 ORM 框架 SqlSugar 系列
【查询基础】.NET开源 ORM 框架 SqlSugar 系列
【排序用法】.NET开源 ORM 框架 SqlSugar 系列
【分组去重】.NET开源 ORM 框架 SqlSugar 系列
【联表查询】.NET开源 ORM 框架 SqlSugar 系列
【导航查询】.NET开源 ORM 框架 SqlSugar 系列
【子查询】.NET开源 ORM 框架 SqlSugar 系列
【嵌套查询】.NET开源 ORM 框架 SqlSugar 系列
【配置查询】.NET开源 ORM 框架 SqlSugar 系列
【并集查询】.NET开源 ORM 框架 SqlSugar 系列
【树型查询】.NET开源 ORM 框架 SqlSugar 系列
【表格查询】.NET开源 ORM 框架 SqlSugar 系列
【动态表达式】.NET开源 ORM 框架 SqlSugar 系列
【查询函数】.NET开源ORM框架 SqlSugar 系列
【过滤器】.NET开源 ORM 框架 SqlSugar 系列
【跨库查询、多库查询】.NET开源 ORM 框架
【报表查询】.NET开源ORM框架 SqlSugar 系列
【Where语法全解密】.NET开源ORM框架 SqlSugar 系列
【Select 语法全解密】.NET开源ORM框架 SqlSugar 系列
【查询返回结果类型】.NET开源ORM框架 SqlSugar 系列
【insert 插入数据语法合集】.NET开源ORM框架 SqlSugar 系列
【SqlSugar雪花ID常见问题】.NET开源ORM框架 SqlSugar 系列