ps個(gè)人網(wǎng)站抖音視頻seo霸屏
系列文章目錄
🎀🎀🎀 .NET開源 ORM 框架 SqlSugar 系列 🎀🎀🎀
文章目錄
- 系列文章目錄
- 一、前言 🍃
- 二、用法介紹
- 三、方法列表
- 四、使用案例
- 五、調(diào)用存儲(chǔ)過程
- 六、in參數(shù)用法
- 七、SqlServer帶Go的腳本處理
- 八、查詢2個(gè)結(jié)果集
- 九、集合參數(shù)批量操作
- 十、表值參數(shù)、游標(biāo)參數(shù)
- 十一、DataSet轉(zhuǎn)List<類>
- 十二、類作為參數(shù)
- 🎀🎀🎀 .NET開源 ORM 框架 SqlSugar 系列 🎀🎀🎀
一、前言 🍃
下面的方法支持復(fù)雜的Sql 、 返回多個(gè)結(jié)果集 、存儲(chǔ)過程等 、可以理解為了一個(gè)高級(jí)DbHelper。
二、用法介紹
//調(diào)用Sql
db.Ado.具體方法//調(diào)用存儲(chǔ)過程
db.Ado.UseStoredProcedure().具體方法
三、方法列表
四、使用案例
?技巧:Sql
中的關(guān)鍵詞用 @
可以支持多庫
//無參數(shù)
var dt=db.Ado.GetDataTable(sql) //上面列表中 SqlQuery 等方法都可以不一定是GetDataTable//參數(shù)1:簡(jiǎn)化用法
var dt=db.Ado.GetDataTable("select * from table where id=@id and name like @name",
new{id=1,name="%"+jack+"%"});//參數(shù)2:復(fù)雜用法
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+"%") //執(zhí)行sql語句
});//參數(shù)3:結(jié)合用法
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用實(shí)體 sql 查詢
List<ClassA> t=db.Ado.SqlQuery<ClassA>(sql);//比db.SqlQueryable兼容性更強(qiáng),支持復(fù)雜SQL存儲(chǔ)過程,缺點(diǎn)沒有自帶的分頁操作//原生SQL用匿名對(duì)象 sql 查詢
List<dynamic> t=db.Ado.SqlQuery<dynamic>(sql); //插入 更新操作一般用
db.Ado.ExecuteCommand(sql);//db.Ado.xxx 還有更多方法看文檔最下面
Sql 查詢用:
GetDataTable
SqlQuery
Sql 增刪改用:
- 增刪改可以用
ExecuteCommand
五、調(diào)用存儲(chǔ)過程
//簡(jiǎn)單用法
var dt = db.Ado.UseStoredProcedure().GetDataTable("sp_school",new{name="張三",age=0}); //帶有output的存儲(chǔ)過程
var nameP= new SugarParameter("@name", "張三");
var ageP= new SugarParameter("@age", null, true);//設(shè)置為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參數(shù) 看文檔 SqlServer 中有介紹 //Oracle 游標(biāo)參數(shù)用法 Blob類型 Clob類型 看文檔 Oracle中有介紹 //如果是ReturnValue
var nameP=new SugarParameter("@name", "張三", typeof(string),ParameterDirection.ReturnValue);//我們還可以用 GetParameters 來簡(jiǎn)化參數(shù)操作 SugarParameter [] pars =db.Ado.GetParameters(new{p=1,p2=p}); pars[1].Direction=ParameterDirection.Output;
六、in參數(shù)用法
var dt = db.Ado.SqlQuery<Order>("select * from [order] where id in(@ids)",new { ids = new int[] { 1,2,3 } }); //是個(gè)數(shù)組不是字符串// new SugarParamter("@ids",int[] { 1,2,3}) //select * from [order] where id in('1','2','3')
七、SqlServer帶Go的腳本處理
db.Ado.ExecuteCommandWithGo(sql) //go語句是獨(dú)立一行就支持
八、查詢2個(gè)結(jié)果集
等同于 Dapper
中的 querymultiple
var views=db.SqlQuery<T,T2>("select * from t; select * from t2");//多實(shí)體
var t1list=views.Item1;
var t2list=views.Item2;
九、集合參數(shù)批量操作
和 Dapper
中的2層集合的參數(shù)功能是一樣的,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.3using (db.Ado.OpenAlways()) { //開啟長(zhǎng)連接foreach(var pars in List<parameter[]>){db.Ado.ExecuteCommand(sql,paras);}}
十、表值參數(shù)、游標(biāo)參數(shù)
- 文檔搜索你用的具體數(shù)據(jù)庫 : SqlServer (表值)
- 文檔搜索你用的具體數(shù)據(jù)庫 : Oracle(表游標(biāo))
十一、DataSet轉(zhuǎn)List<類>
SqlQuery<T,T2,T3..>
最多只能有 7
個(gè),我們可以用 db.Ado.GetDataSetAll
拿出超過 7
個(gè)結(jié)果集。
var datables=ds.Tables.Cast<DataTable>().ToList();
foreach (var item in tables)
{var list = db.Utilities.DataTableToList<Order>(item);
}
十二、類作為參數(shù)
默認(rèn)只支持匿名類作為參數(shù),普通類參數(shù)是不支持的。
如果想支持類作為參數(shù)可以自個(gè)封裝個(gè)方法。
代碼如下:
var pars=new {id=1;name="a"};//默認(rèn)支持匿名類//普通類作為參數(shù)最大問題 會(huì)把所有屬性都變成參數(shù) ,匿名類型就不存在這個(gè)問題
var obj = new Order(){ ....} ;//類對(duì)象
SugarParameter[] pars=obj.GetType().GetProperties().Select(it => new SugarParameter(it.Name, it.GetValue(obj))).ToArray();
🎀🎀🎀 .NET開源 ORM 框架 SqlSugar 系列 🎀🎀🎀
【開篇】.NET開源 ORM 框架 SqlSugar 系列
【入門必看】.NET開源 ORM 框架 SqlSugar 系列
【實(shí)體配置】.NET開源 ORM 框架 SqlSugar 系列
【Db First】.NET開源 ORM 框架 SqlSugar 系列
【Code First】.NET開源 ORM 框架 SqlSugar 系列
【數(shù)據(jù)事務(wù)】.NET開源 ORM 框架 SqlSugar 系列
【連接池】.NET開源 ORM 框架 SqlSugar 系列
【查詢目錄】.NET開源 ORM 框架 SqlSugar 系列
【查詢基礎(chǔ)】.NET開源 ORM 框架 SqlSugar 系列
【排序用法】.NET開源 ORM 框架 SqlSugar 系列
【分組去重】.NET開源 ORM 框架 SqlSugar 系列
【聯(lián)表查詢】.NET開源 ORM 框架 SqlSugar 系列
【導(dǎo)航查詢】.NET開源 ORM 框架 SqlSugar 系列
【子查詢】.NET開源 ORM 框架 SqlSugar 系列
【嵌套查詢】.NET開源 ORM 框架 SqlSugar 系列
【配置查詢】.NET開源 ORM 框架 SqlSugar 系列
【并集查詢】.NET開源 ORM 框架 SqlSugar 系列
【樹型查詢】.NET開源 ORM 框架 SqlSugar 系列
【表格查詢】.NET開源 ORM 框架 SqlSugar 系列
【動(dòng)態(tài)表達(dá)式】.NET開源 ORM 框架 SqlSugar 系列
【查詢函數(shù)】.NET開源ORM框架 SqlSugar 系列
【過濾器】.NET開源 ORM 框架 SqlSugar 系列
【跨庫查詢、多庫查詢】.NET開源 ORM 框架
?【報(bào)表查詢】.NET開源ORM框架 SqlSugar 系列
【W(wǎng)here語法全解密】.NET開源ORM框架 SqlSugar 系列
【Select 語法全解密】.NET開源ORM框架 SqlSugar 系列
【查詢返回結(jié)果類型】.NET開源ORM框架 SqlSugar 系列
【insert 插入數(shù)據(jù)語法合集】.NET開源ORM框架 SqlSugar 系列
【SqlSugar雪花ID常見問題】.NET開源ORM框架 SqlSugar 系列