天天看点

.Net项目引入ORM SqlSugar框架及简单使用

SqlSugar的优点就不在这里重复了。

一,Nuget 安装

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

.Net项目引入ORM SqlSugar框架及简单使用

二,简单使用

1.建立数据库连接

public SqlSugarClient GesmartDb()
        {
            SqlSugarClient Db = new SqlSugarClient(new ConnectionConfig()
            {
                ConnectionString = "Data Source=127.0.0.1,1433;Initial Catalog=xxx;User ID=sa;Password=1;Max Pool Size=1000;MultipleActiveResultSets=true;",//数据库连接串
                DbType = DbType.SqlServer,
                InitKeyType = InitKeyType.Attribute,//从特性读取主键和自增列信息
                IsAutoCloseConnection = true,//开启自动释放模式和EF原理一样我就不多解释了

            });
            //用来打印Sql方便调式    
            Db.Aop.OnLogExecuting = (sql, pars) =>
                {
                    //记录日志
                    SmartLog.WriteLog(sql + "\r\n" +
                    Db.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value)));
                };
            return Db;
        }
           

2.根据需求使用SQLSugar实现增删改查

using (SqlSugarClient db = commonDb.GesmartDb())
{
    /*查询*/
    var list = db.Queryable<StudentModel>().ToList();//查询所有
    var getById = db.Queryable<StudentModel>().InSingle(1);//根据主键查询
    var getByWhere = db.Queryable<StudentModel>().Where(it=>it.Id==1).ToList();//根据条件查询
    var total = 0;
    var getPage = db.Queryable<StudentModel>().Where(it => it.Id == 1).ToPageList(1,2,ref total);//根据分页查询
    //多表查询用法 http://www.codeisbug.com/Doc/8/1124
 
    /*插入*/
    var data = new Student() { Name = "jack" };
    db.Insertable(data).ExecuteCommand();
    //更多插入用法 http://www.codeisbug.com/Doc/8/1130
 
    /*更新*/
    var data2 = new Student() { Id =1, Name = "jack" };
    db.Updateable(data2).ExecuteCommand();
    //更多更新用法 http://www.codeisbug.com/Doc/8/1129
 
    /*删除*/
    db.Deleteable<StudentModel>(1).ExecuteCommand();
    //更多删除用法 http://www.codeisbug.com/Doc/8/1128
}
           

三,目前个人使用比较顺手的SQLSugar小技巧,直接上代码。

1.根据数据库生成实体类

using (SqlSugarClient db = commonDb.GesmartDb())
{
                //直接生成数据库所有实体类,并识别自增长ID  生成类的文件夹地址D:\xxx\DbModels 生成类的命名空间 xxx_Entity
                     db.DbFirst.IsCreateAttribute().CreateClassFile(@"D:\xxx\DbModels", "xxx_Entity");
                //生成数据库单个表的实体类,并识别自增长ID  生成类的文件夹地址D:\xxx\DbModels 生成类的命名空间 xxx_Entity
                     db.DbFirst.IsCreateAttribute().Where("Workcenter").CreateClassFile(@"D:\xxx\DbModels", "xxx_Entity");
}
           

2.直接执行SQL语句,由于老项目比较杠都是手写sql语句,所以sql语句都比较骚气,所以在用这个框架时还是忍不住骚一把。

using (SqlSugarClient db = commonDb.GesmartDb())
            {
                //获取插入后的自增长列
                long i = db.Insertable(card).IgnoreColumns(c => new { c.FinishTime, c.LeaveTime, c.ArriveTime }).ExecuteReturnIdentity();

                //递归查询,假装很骚
                DataTable tbMobile = db.Ado.GetDataTable(@"WITH CTE AS 
            (SELECT  xxx from xxx where [email protected] and [email protected])
            SELECT  xxx FROM  xxx c INNER JOIN  CTE t ON xxx", new List<SugarParameter>(){
                            new SugarParameter("@departmentID",11),
                            new SugarParameter("@statusID",2)
                    });

                return new ResultInfo() { Message = i.ToString(), DateTime = DateTime.Now, Status = "200" };
            }
           

--------------------END------------------------

后面使用发现有意思的再分享