首页 > 数据库 >SqlSugar

SqlSugar

时间:2022-09-05 17:58:54浏览次数:42  
标签:Userdb id User var new public SqlSugar

SqlSugar

官方文档:http://www.codeisbug.com/Doc/8

Nuget 安装

SqlSugar是.NET版本,SqlSugarCore是.NET CORE版本,根据你的项目选择你的引用dll

PM> Install-Package sqlSugar 

PM> Install-Package sqlSugarCore

高性能 ,不夸张的说,去掉Sql在数据库执行的时间,SqlSugar是EF数倍性能,另外在批量操作和一对多查询上也有不错的SQL优化

高扩展性 ,支持自定义拉姆达函数解析、扩展数据类型、支持自定义实体特性,外部缓存等

DbContext

  public DbContext()
  {
      Db = new SqlSugarClient(new ConnectionConfig()
      {
          ConnectionString = "server=localhost;uid=root;pwd=woshishui;database=test"
              , DbType = DbType.MySql
              , InitKeyType = InitKeyType.Attribute, //从特性读取主键和自增列信息
              IsAutoCloseConnection = true, //开启自动释放模式和EF原理一样我就不多解释了
      });
      //调式代码 用来打印SQL 
      Db.Aop.OnLogExecuting = (sql, pars) =>
      {
          Console.WriteLine(sql + "\r\n" +
              Db.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value)));
          Console.WriteLine();
      };
  }
  //注意:不能写成静态的,不能写成静态的
  public SqlSugarClient Db; //用来处理事务多表查询和复杂的操作
  public SimpleClient < User > Userdb
  {
      get
      {
          return new SimpleClient < User > (Db);
      }
  } //用来处理Student表的常用操作
  // public SimpleClient<School> SchoolDb { get { return new SimpleClient<School>(Db); } }//用来处理School表的常用操作
  

DbContext增删查改

查询数据

  public class DemoManager: DbContext //继承DbContext
  {
      public void query()
      {
          var data2 = Userdb.GetList(); //查询所有
          var data1 = Userdb.GetById(1); //根据ID查询
      }
      public void SearchDemo()
      {
          var data2 = Userdb.GetList(); //查询所有
          var data3 = Userdb.GetList(it => it.id == 1); //根据条件查询  
          var data4 = Userdb.GetSingle(it => it.id == 1); //根据条件查询一条
          var p = new PageModel()
          {
              PageIndex = 1, PageSize = 2
          }; 
          // 分页查询
          var data5 = Userdb.GetPageList(it => it.用户 == "xx", p);
          Console.Write(p.PageCount); //返回总数
          // 分页查询加排序
          var data6 = Userdb.GetPageList(it => it.用户 == "xx", p, it => it.用户, OrderByType.Asc);
          Console.Write(p.PageCount); //返回总数
          //组装条件查询作为条件实现 分页查询加排序
          List < IConditionalModel > conModels = new List < IConditionalModel > ();
          conModels.Add(new ConditionalModel()
          {
              FieldName = "id", ConditionalType = ConditionalType.Equal, FieldValue = "1"
          }); //id=1
          var data7 = Userdb.GetPageList(conModels, p, it => it.用户, OrderByType.Asc);
          //4.9.7.5支持了转换成queryable,我们可以用queryable实现复杂功能
          Userdb.AsQueryable()
              .Where(x => x.id == 1)
              .ToList();
      }
         
      //多表查询
      public void JoinDemo()
      {
          var list = Db.Queryable < User
              , User > ((st, sc) => new object[]
              {
                  JoinType.Left
                      , st.用户 == sc.用户
              })
              .Select < User > ()
              .ToList();
      }
  }
  

事务

      //使用事务的例子
      public void TranDemo()
      {
          var result = Db.Ado.UseTran(() =>
          {
              //这里写你的逻辑
          });
          if (result.IsSuccess)
          {
              //成功
          }
          else
          {
              Console.WriteLine(result.ErrorMessage);
          }
      }
      

更新数据

      //更新例子
      public void UpdateDemo()
      {
          var student = new User()
          {
              id = 1, 用户 = "jack"
          };
          var studentArray = new User[]
          {
              student
          };
          Userdb.Update(student); //根据实体更新
          Userdb.UpdateRange(studentArray); //批量更新
          // Userdb.Update(it => new User() { 用户 = "a", CreateTime = DateTime.Now }, it => it.Id == 1);// 只更新Name列和CreateTime列,其它列不更新,条件id=1
          //支持Userdb.AsUpdateable(student)
      }
      

新增数据

      //插入例子
      public void InsertDemo()
      {
          var student = new User()
          {
              用户 = "jack"
          };
          var studentArray = new User[]
          {
              student
          };
          Userdb.Insert(student); //插入
          Userdb.InsertRange(studentArray); //批量插入
          var id = Userdb.InsertReturnIdentity(student); //插入返回自增列
          //4.9.7.5我们可以转成 Insertable实现复杂插入
          // Userdb.AsInsertable(insertObj).ExecuteCommand();
      }
      

删除数据

      //删除例子
      public void DeleteDemo()
      {
          var student = new User()
          {
              id = 1, 用户 = "jack"
          };
          Userdb.Delete(student); //根据实体删除
          Userdb.DeleteById(1); //根据主键删除
          Userdb.DeleteById(new int[]
          {
              1, 2
              
          }); //根据主键数组删除
          Userdb.Delete(it => it.id == 1); //根据条件删除
          //支持Userdb.AsDeleteable()
      }
      

实体类

 [SugarTable("user")]
 public class User
 {
     //指定主键和自增列,当然数据库中也要设置主键和自增列才会有效
        [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
     public int id
     {
         get;
         set;
     }
     public string 用户
     {
         get;
         set;
     }
     public string 密码
     {
         get;
         set;
     }
     public int 权限
     {
         get;
         set;
     }
 }
 

使用

DemoManager demo = new DemoManager();
demo.query();

标签:Userdb,id,User,var,new,public,SqlSugar
From: https://www.cnblogs.com/ouyangkai/p/16659002.html

相关文章