H5九人斗牛架设之SqlSugar ORM 【入门篇】

H5九人斗牛架设之SqlSugar ORM下载更多ORM(aqiulian.com)咨询更多可以企鹅我Q_212303635。

背景

SqlSugar是一款国产ORM,除了拥有媲美原生的性能 另外还有满足各种需求的功能,简单好用一分钟就能够轻松上手。

2.x版本正式在自已公司内部项目使用

3.x版本得到了更多公司的喜欢不过也会抱怨有很多不足

4.x版本17年5月发布后得到的评价超出了我的预期, 刚发布的时候做了大量的单元测试,不过还是有不少BUG,经过大量的用户反馈8月份左右成型和稳定,并且大量的项目得到交付,也得到了使用者的好评,现在我认为是一个较出色的版本所以我才开始写这篇文章介绍它

5.x版本 预计今年的5月份发布试用版本会完美兼4.X版本,随着几年对emit和拉姆达解析的深入理解,5.x版本将会有颠覆ORM的改变,具体什么样的功能暂时保密。

 

介绍

支持:Oracle、Mysql、Sqlite、SqlSever四种数据库,Postgresql年后也将支持已经在开发中了,支持的字段数据类型也是相当齐全

功能: 批量操作、CodeFirst、DbFirst、二级分布式缓存、AOP、读写分离、自定义Sql函数的扩展、动态表别名列别名,属性表别名列别名,拉姆达子查询,JOIN,UNIONALL,插入支持了默认值,更新支持了指定列排除列等常用功能

优点: 性能、语法简单、功能强大和持续更新维护

安装下载

下载地址:

https://github.com/sunkaixuan/SqlSugar

Nuget:

.net 4.0及以上版本: Install-Package sqlSugar 

.net core 2.0 版本:Install-Package sqlSugarCore

 

连接数据库

SqlSugar是通过SqlSugarClient来进行数据库的操作,而创建SqlSugarClient我们需要ConnectionConfig这个类对象

ConnectionConfig有6个属性分别是:

1.ConnectionString(必填):连接字符串

2.DataType必填: 数据库类型

3.IsAutoCloseConnection:(默认false)是否自动释放数据库,设为true我们不需要close或者Using的操作,比较推荐

 

4.InitKeyType:(默认SystemTable)初始化主键和自增列信息的方式(注意:如果是数据库权限受管理限制或者找不到主键一定要设成attribute)

InitKeyType.SystemTable表示自动从数据库读取主键自增列的信息(适合SA等高权限的账户)

 如果是这种模式实体类就普通的实体类便可以,不需要加任何东西

InitKeyType.Attribute 表示从实体类的属性中读取 主键和自增列的信息(适合有独立的运维组的用户没有系统表操作权限)

 如果是这种模式实体类需要有所改变

1
[SugarColumn(IsPrimaryKey= true ,IsIdentity= true )]  //如果是主键并且是自增列就加上2个属性
1
[SugarColumn(IsPrimaryKey= true )] //如果只是主键只能加一个  

 

5.MoreSettings 

用于一些全局设置

MoreSettings .IsAutoRemoveDataCache 为true表示可以自动删除二级缓存

MoreSettings .IsWithNoLockQuery 为true表式查询的时候默认会加上.With(SqlWith.NoLock),可以用With(SqlWith.Null)让全局的失效

6.ConfigureExternalServices

可以扩展你想要的序列化方式和缓存方式等服务

 

实现一个简单的增、删、查和改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
SqlSugarClient db =  new  SqlSugarClient( new  ConnectionConfig() {
ConnectionString = Config.ConnectionString,  //必填
DbType = DbType.SqlServer,  //必填
IsAutoCloseConnection =  true });  //默认InitKey=SystemTable
 
 
var  list=db.Queryable<Student>().ToList(); //查询所有(使用SqlSugarClient查询所有到LIST)
 
var  list2 = db.Queryable<Student, School, Student, Student, Student>((st, sc, st2, st3, st4) =>  new  object [] {
JoinType.Left,st.SchoolId==sc.Id,
JoinType.Left,st.Id==st2.Id,
JoinType.Left,st.Id==st3.Id,
JoinType.Left,st.Id==st4.Id
})
.Where((st,sc)=>sc.Id==1)
.Select((st, sc, st2,st3,st4) =>  new  { id= st.Id ,name=st.Name,st4=st4}).ToList(); //5表查询
 
 
db.Insertable(insertObj).ExecuteCommand(); //插入
db.Updateable(updateObj).ExecuteCommand(); //更新
db.Deleteable<Student>(1).ExecuteCommand(); //删除<br>//db.Aop功能<br>//db.Ado功能<br>//...

SqlSugarClient对象可以完成非常复杂的数据库操,这些功能会在后面介绍

 

简化增、删、查和改

SqlSugarClient对象虽然强大但是大多数用户还是会在我的基础上在封装一层仓储然后简化增删查改,复杂的功能在用SqlSugarClient实现

所以我就集成了SimpleClient这个类让你不用在去写额外代码。

 

你可以建一个类继承SimpleClient或者直接使用SimpleClient

1
2
3
4
5
6
7
8
9
10
11
12
13
//我们就来扩展一个SimpleClient取名叫DbSet
public  class  DbSet<T>:SimpleClient<T>  where  T :  class new ()
{
     public  DbSet(SqlSugarClient context): base (context)
     {
             
     }
     //SimpleClient中的方法满足不了你,你可以扩展自已的方法
     public  List<T> GetByIds(dynamic [] ids)
     {
         return  Context.Queryable<T>().In(ids).ToList(); ;
     }
}

 

我们来创建一个DbContext类,里面包含了Db、StudentDb和SchoolDb 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//创建一个DbContext类,使用DbSet(或者SimpleClient)
public  class  DbContext
{
         public  DbContext()
         {
             Db =  new  SqlSugarClient( new  ConnectionConfig()
             {
                 ConnectionString =  "xx" ,
                 DbType = DbType.SqlServer,
                 IsAutoCloseConnection =  true , //开启自动释放模式和EF原理一样我就不多解释了
                 //InitKey默认SystemTable
             });
         }
         public  SqlSugarClient Db; //用来处理事务多表查询和复杂的操作
         public  DbSet<Student> StudentDb {  get  return  new  DbSet<Student>(db); } } //用来处理Student表的常用操作
         public  DbSet<School> SchoolDb {  get  return  new  DbSet<School>(db); } } //用来处理School表的常用操作
}

  

我们只要继承DbContext就可以方便的操作数据库

 

1
2
3
4
5
6
7
8
9
10
11
使用 DbSet 对象实现增删查和改
StudentDb.GetList(
StudentDb.GetById
StudentDb.Delete
StudentDb.Update
StudentDb.Insert
StudentDb.GetPageList
 
使用SqlSugarClient对象
Db.Ado.UseTran(()=>{ 事务内的操作 }) //事务操作
Db.Queryable<T,T2>  //实现复杂查询

  

 

通过本篇相信你已经可以方便的用SqlSugar ORM实现简单的增、删、查和改了

 

注意:我上面的例子使用的是默认InitKey方式实现的,如果用InitKey.Attribute需要在实体的属性上添加主键标记,在本篇的连接数据库中有详细介绍。

如果还不明白的话可以下载 https://github.com/sunkaixuan/SqlSugar 里面有详细的DEMO和建库脚本

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值