做公众号主页面的有哪些网站,二手手表交易平台哪个好,可以查各种资料的app,企业网站管理系统带授权1 关于 SqlSugar
SqlSugar 是 .NET/C# 平台非常优秀的 ORM 框架#xff0c;目前 Nuget 总下载突破 700K#xff0c;Github 关注量也高达 3.2K#xff0c;是目前当之无愧的国产优秀 ORM 框架之一。
SqlSugar 官方地址#xff1a;果糖网 #xff08; SqlSugar 官网 #…
1 关于 SqlSugar
SqlSugar 是 .NET/C# 平台非常优秀的 ORM 框架目前 Nuget 总下载突破 700KGithub 关注量也高达 3.2K是目前当之无愧的国产优秀 ORM 框架之一。
SqlSugar 官方地址果糖网 SqlSugar 官网 .NET论坛 .NET学习
SqlSugar 与 EF 优势 性能比 EF 更快、语法上手更容易
SqlSugar 与 Dapper 优势 SqlSugar 功能更加丰富性能丝毫不逊色于 Dapper并且批量操作性能更好 2 如何集成 在 Furion 框架中已经推出 SqlSugar 拓展包 Furion.Extras.DatabaseAccessor.SqlSugar。 2.1 注册 SqlSugar 服务 使用非常简单只需要在 Startup.cs 中添加 services.AddSqlSugar(config) 即可。如
services.AddSqlSugar(new ConnectionConfig
{ConnectionString Server.xxxxx,//连接符字串DbType DbType.SqlServer,IsAutoCloseConnection true,InitKeyType InitKeyType.Attribute//从特性读取主键自增信息
});同时也可以添加更多配置如 services.AddSqlSugar(new ConnectionConfig
{ConnectionString Server.xxxxx,//连接符字串DbType DbType.SqlServer,IsAutoCloseConnection true,InitKeyType InitKeyType.Attribute//从特性读取主键自增信息
},
db
{//处理日志事务db.Aop.OnLogExecuting (sql, pars) {Console.WriteLine(sql);Console.WriteLine(string.Join(,, pars?.Select(it it.ParameterName : it.Value)));Console.WriteLine();};
});安装拓展包位置 在 Furion 框架中推荐将拓展包 Furion.Extras.DatabaseAccessor.SqlSugar 安装到 Furion.Core 层中。 3 基本使用 在使用之前我们可以通过构造函数注入 ISqlSugarRepositoryTEntity 接口如 private readonly ISqlSugarRepositoryPerson repository; // 仓储对象封装简单的CRUD
private readonly ISqlSugarClient db; // 核心对象拥有完整的SqlSugar全部功能
public PersonService(ISqlSugarRepositoryPerson sqlSugarRepository)
{repository sqlSugarRepository;db repository.Context; // 推荐操作
}4 数据库操作示例 // SqlSugarClient
//查询功能
var data1 db.QueryableStudent().First(itit.Id1); //db.GetById(1);
var data2 db.QueryableStudent().ToList();// db.GetList();
var data3 db.GetList(it it.Id 1);
var data4 db.GetSingle(it it.Id 1);
var p new PageModel() { PageIndex 1, PageSize 2 };
var data5 db.GetPageList(it it.Name xx, p);//p.PageCount
var data6 db.GetPageList(it it.Name xx, p, it it.Name, OrderByType.Asc);
ListIConditionalModel conModels new ListIConditionalModel();
conModels.Add(new ConditionalModel(){FieldNameid,ConditionalTypeConditionalType.Equal,FieldValue1});//id1
var data7 db.GetPageList(conModels, p, it it.Name, OrderByType.Asc);
// 简单仓储
//插入
repository.Insert(insertObj);
repository.InsertRange(InsertObjs);
var id repository.InsertReturnIdentity(insertObj);
repository.AsInsertable(insertObj).ExecuteCommand();
//删除
repository.Delete(insertObj);
repository.DeleteById(1);
repository.DeleteByIds(new object [] { 1, 2 }); //数组带是 ids方法 封装传 object [] 类型
repository.Delete(it it.Id 1);
repository.AsDeleteable().Where(it it.Id 1).ExecuteCommand();
//更新
repository.Update(insertObj);
repository.UpdateRange(InsertObjs);
repository.Update(it new Order() { Name a, }, it it.Id 1);
repository.AsUpdateable(insertObj).UpdateColumns(itnew { it.Name }).ExecuteCommand();
//异步方法用法
repository.Insert(insertObj);//同步
repository.InsertAsync(insertObj);//异步
//切换仓储
var orderRespositorydb.GetSimpleClientOrder();
orderRespository.Insert(Order);5 SqlSugarClient 操作示例 5.1 基础查询 //查询所有
var getAll db.QueryableStudent().ToList();
//查询前10
var top10 db.QueryableStudent().Take(10).ToList();
//查询单条
var getFirst db.QueryableStudent().First(itit.Id1);
//with nolock
var getAllNoLock db.QueryableStudent().With(SqlWith.NoLock).ToList();
//根据主键查询
var getByPrimaryKey db.QueryableStudent().InSingle(2);
//查询总和
var sum db.QueryableStudent().Sum(itit.Id);
//是否存在
var isAny db.QueryableStudent().Where(itit.Id-1).Any();
//模糊查
var list2 db.QueryableOrder().Where(it it.Name.Contains(jack)).ToList();5.2 联表查询 var list db.QueryableStudent, School((st, sc) new JoinQueryInfos(JoinType.Left,st.SchoolIdsc.Id)).Select((st,sc)new{Idst.Id,Namest.Name,SchoolNamesc.Name}).ToList();
生成的Sql如下:
SELECT [st].[ID] AS [id] ,[st].[Name] AS [name] ,[sc].[Name] AS [schoolName] FROM [STudent] stLeft JOIN School sc ON ( [st].[SchoolId] [sc].[Id])5.3 分页查询 int pageIndex 1;int pageSize 20;int totalCount0;var page db.QueryableStudent().ToPageList(pageIndex, pageSize, ref totalCount);更多查询用法 http://www.donet5.com/Home/Doc?typeId1185 5.4 插入 //可以是 类 或者 List类
db.Insertable(insertObj).ExecuteCommand();
//插入返回自增列
db.Insertable(insertObj).ExecuteReturnIdentity();
//可以是 Dictionary 或者 ListDictionary
var dc new Dictionarystring, object();dt.Add(name, 1);dt.Add(CreateTime, null);
db.Insertable(dc).AS(student).ExecuteCommand();
//DataTable插入
Dictionarystring,object dc db.Utilities.DataTableToDictionary(dataTable);//转成字典就可以按上面的字典更新了
db.Insertable(dc).AS(student).ExecuteReturnIdentity();
//实体可以配置主键和自增列
public class Student
{[SugarColumn(IsPrimaryKey true, IsIdentity true)]public int Id { get; set; }public int? SchoolId { get; set; }public string Name { get; set; }
}更多插入用法 http://www.donet5.com/Home/Doc?typeId1193 5.5 更新 实体配置参考插入只需要配置主键即可 //根据主键更新单条 参数 Class
var result db.Updateable(updateObj).ExecuteCommand();
//不更新 Name 和TestId
var resultdb.Updateable(updateObj).IgnoreColumns(it new { it.CreateTime,it.TestId }).ExecuteCommand()
//只更新 Name 和 CreateTime
var resultdb.Updateable(updateObj).UpdateColumns(it new { it.Name,it.CreateTime }).ExecuteCommand();
//根据表达式更新
var result71 db.UpdateableOrder().SetColumns(it it.Name a).SetColumnsIF(p!null ,it it.CreateTime p.Value)//当p不等于null更新createtime列.Where(it it.Id 11).ExecuteCommand();更多更新用法 http://www.donet5.com/Home/Doc?typeId1191 5.6 删除 实体配置参考插入只需要配置主键即可 //根据实体删除
db.DeleteableStudent().Where(new Student() { Id 1 }).ExecuteCommand();
//根据主键删除
db.DeleteableStudent().In(1).ExecuteCommand();
//根据表达式删除
db.DeleteableStudent().Where(it it.Id 1).ExecuteCommand();更多删除用法: http://www.donet5.com/Home/Doc?typeId1195 6 Sql 查询 //sql分页
var list db.SqlQueryableStudent(select * from student).ToPageList(1, 2,ref total);
//原生Sql用法
var dtdb.Ado.GetDataTable(select * from table where idid and namename,new ListSugarParameter(){new SugarParameter(id,1),new SugarParameter(name,2)
});
//参数2
var dtdb.Ado.GetDataTable(select * from table where idid and namename,new{id1,name2});
//存储过程用法
var nameP new SugarParameter(name, 张三);
var ageP new SugarParameter(age, null, true);//设置为output
var dt db.Ado.UseStoredProcedure().GetDataTable(sp_school,nameP,ageP);方法名描述返回值SqlQuery T 查询所有返回实体集合ListSqlQueryT,T2可以返回 2 个结果集TupleList, ListSqlQuerySingle查询第一条记录TGetDataTable查询所有DataTableGetDataReader读取 DR 需要手动释放 DRDataReaderGetDataSetAll获取多个结果集DataSetExecuteCommand返回受影响行数一般用于增删改intGetScalar获取首行首列objectGetString获取首行首列stringGetInt获取首行首列intGetLong获取首行首列longGetDouble获取首行首列DoubleGetDecimal获取首行首列DecimalGetDateTime获取首行首列DateTime 想了解更多 SqlSugar 知识可查阅 SqlSugar 官网。 7 打印 sql 到 Swagger services.AddSqlSugar(new ConnectionConfig
{ConnectionString Server.xxxxx,//连接符字串DbType DbType.SqlServer,IsAutoCloseConnection true,InitKeyType InitKeyType.Attribute//从特性读取主键自增信息
},
db
{db.Aop.OnLogExecuting (sql, pars) {App.PrintToMiniProfiler(SqlSugar, Info, sql \r\n string.Join(,, pars?.Select(it it.ParameterName : it.Value)));};
});--------------------- 作者风神.NET跨平台 来源CSDN 原文https://blog.csdn.net/WuLex/article/details/117913329 版权声明本文为作者原创文章转载请附上博文链接 内容解析ByCSDN,CNBLOG博客文章一键转载插件