你的位置:首页 > 软件开发 > ASP.net > OracleSugar ORM框架的诞生,代码开源

OracleSugar ORM框架的诞生,代码开源

发布时间:2016-09-14 13:00:04
经过四天的努力终于将SqlSugar ORM 成功支持ORACLE数据库 优点:1、高性能,达到原生最高水准,比SqlHelper性能要高,比Dapper快30% 比EF快50% 2、支持多种数据库 ,sql版本更新最快,其它会定期更新,可以在多种数据库用一种编程方 ...

 经过四天的努力终于将SqlSugar ORM 成功支持ORACLE数据库 

 

OracleSugar ORM框架的诞生,代码开源

优点:

1、高性能,达到原生最高水准,比SqlHelper性能要高,比Dapper快30% 比EF快50% 

2、支持多种数据库 ,sql版本更新最快,其它会定期更新,可以在多种数据库用一种编程方式

3、支持.net Core

4、支持多库并行计算

5、带有实体生成函数和T4模版生成实体

6、无需任何配置 ,还你一个干净的model

 

 

 

 

2、功能介绍/Product function introduction

 

查询/Search

 

1、Queryable用于拉姆达操作数据库

 

2、SqlQuery用于执行SQL和存储过程

 

3、Sqlable一种更新近SQL的写法

 

1、Queryable 用于拉姆达表达式操作(支持Join多表)    / Select single table or view

  //查询所有        var student = db.Queryable<STUDENT>().ToList();        var studentDynamic = db.Queryable<STUDENT>().ToDynamic();        var studentJson = db.Queryable<STUDENT>().ToJson();        //查询单条        var single = db.Queryable<STUDENT>().Single(c => c.ID == 1);        //查询单条没有记录返回空对象        var singleOrDefault = db.Queryable<STUDENT>().SingleOrDefault(c => c.ID == 11111111);        //查询单条没有记录返回空对象        var single2 = db.Queryable<STUDENT>().Where(c => c.ID == 1).SingleOrDefault();        //查询第一条        var first = db.Queryable<STUDENT>().Where(c => c.ID == 1).First();        var first2 = db.Queryable<STUDENT>().Where(c => c.ID == 1).FirstOrDefault();        //取10-20条        var page1 = db.Queryable<STUDENT>().Where(c => c.ID > 10).OrderBy(it => it.ID).Skip(10).Take(20).ToList();        //上一句的简化写法,同样取10-20条        var page2 = db.Queryable<STUDENT>().Where(c => c.ID > 10).OrderBy(it => it.ID).ToPageList(2, 10);        //查询条数        var count = db.Queryable<STUDENT>().Where(c => c.ID > 10).Count();        //从第2条开始以后取所有        var skip = db.Queryable<STUDENT>().Where(c => c.ID > 10).OrderBy(it => it.ID).Skip(2).ToList();        //取前2条        var take = db.Queryable<STUDENT>().Where(c => c.ID > 10).OrderBy(it => it.ID).Take(2).ToList();        // Not like         get='_blank'>string conval = "a";        var notLike = db.Queryable<STUDENT>().Where(c => !c.NAME.Contains(conval.ToString())).ToList();        //Like        conval = "三";        var like = db.Queryable<STUDENT>().Where(c => c.NAME.Contains(conval)).ToList();        //支持字符串Where 让你解决,更复杂的查询        var student12 = db.Queryable<STUDENT>().Where(c => "a" == "a").Where("id>:id", new { id = 1 }).ToList();        var student13 = db.Queryable<STUDENT>().Where(c => "a" == "a").Where("id>100 ").ToList();        //存在记录反回true,则否返回false        bool isAny100 = db.Queryable<STUDENT>().Any(c => c.ID == 100);        bool isAny1 = db.Queryable<STUDENT>().Any(c => c.ID == 1);        //获取最大Id        object maxId = db.Queryable<STUDENT>().Max(it => it.ID);        int maxId1 = db.Queryable<STUDENT>().Max(it => it.ID).ObjToInt();//拉姆达        int maxId2 = db.Queryable<STUDENT>().Max<STUDENT, int>("id"); //字符串写法        //获取最小        int minId1 = db.Queryable<STUDENT>().Where(c => c.ID > 0).Min(it => it.ID).ObjToInt();//拉姆达        int minId2 = db.Queryable<STUDENT>().Where(c => c.ID > 0).Min<STUDENT, int>("id");//字符串写法        //order By         var orderList = db.Queryable<STUDENT>().OrderBy("id desc,name asc").ToList();//字符串支持多个排序        //可以多个order by表达示        var order2List = db.Queryable<STUDENT>().OrderBy(it => it.NAME).OrderBy(it => it.ID, OrderByType.desc).ToList(); // order by name as ,order by id desc        //In        var intArray = new[] { "5", "2", "3" };        var intList = intArray.ToList();        var list0 = db.Queryable<STUDENT>().In(it => it.ID, 1, 2, 3).ToList();        var list1 = db.Queryable<STUDENT>().In(it => it.ID, intArray).ToList();        var list2 = db.Queryable<STUDENT>().In("id", intArray).ToList();        var list3 = db.Queryable<STUDENT>().In(it => it.ID, intList).ToList();        var list4 = db.Queryable<STUDENT>().In("id", intList).ToList();        //分组查询        var list7 = db.Queryable<STUDENT>().Where(c => c.ID < 20).GroupBy(it => it.SEX).Select("sex,count(*) count").ToDynamic();        var list8 = db.Queryable<STUDENT>().Where(c => c.ID < 20).GroupBy(it => it.SEX).GroupBy(it => it.ID).Select("id,sex,count(*) count").ToDynamic();        List<SexTotal> list9 = db.Queryable<STUDENT>().Where(c => c.ID < 20).GroupBy(it => it.SEX).Select<STUDENT, SexTotal>("SEX,count(*) COUNT").ToList();        List<SexTotal> list10 = db.Queryable<STUDENT>().Where(c => c.ID < 20).GroupBy("sex").Select<STUDENT, SexTotal>("SEX,count(*) COUNT").ToList();        //SELECT Sex,Count=count(*) FROM Student WHERE 1=1 AND (id < 20)  GROUP BY Sex --生成结果        //2表关联查询        var jList = db.Queryable<STUDENT>()        .JoinTable<STUDENT, SCHOOL>((s1, s2) => s1.SCH_ID == s2.ID) //默认left join        .Where<STUDENT, SCHOOL>((s1, s2) => s1.ID == 1)        .Select("s1.*,s2.name as schName")        .ToDynamic();        /*等于同于         SELECT s1.*,s2.name as schName         FROM [Student] s1         LEFT JOIN [School] s2 ON s1.sch_id = s2.id         WHERE s1.id = 1 */        //2表关联查询并分页        var jList2 = db.Queryable<STUDENT>()        .JoinTable<STUDENT, SCHOOL>((s1, s2) => s1.SCH_ID == s2.ID) //默认left join          //如果要用inner join这么写          //.JoinTable<Student, School>((s1, s2) => s1.sch_id == s2.id ,JoinType.INNER)        .Where<STUDENT, SCHOOL>((s1, s2) => s1.ID > 1)        .OrderBy<STUDENT, SCHOOL>((s1, s2) => s1.NAME)        .Skip(10)        .Take(20)        .Select("s1.*,s2.name as schName")        .ToDynamic();        //3表查询并分页        var jList3 = db.Queryable<STUDENT>()        .JoinTable<STUDENT, SCHOOL>((s1, s2) => s1.SCH_ID == s2.ID) // left join School s2 on s1.id=s2.id        .JoinTable<STUDENT, SCHOOL>((s1, s3) => s1.SCH_ID == s3.ID) // left join School s3 on s1.id=s3.id        .Where<STUDENT, SCHOOL>((s1, s2) => s1.ID > 1) // where s1.id>1        .Where<STUDENT>(s1 => s1.ID > 0)        .OrderBy<STUDENT, SCHOOL>((s1, s2) => s1.ID) //order by s1.id 多个order可以 .oderBy().orderby 叠加         .Skip(10)        .Take(20)        .Select("s1.*,s2.name as schName,s3.name as schName2")//select目前只支持这种写法        .ToDynamic();        //上面的方式都是与第一张表join,第三张表想与第二张表join写法如下        List<classNew> jList4 = db.Queryable<STUDENT>()         .JoinTable<STUDENT, SCHOOL>((s1, s2) => s1.SCH_ID == s2.ID) // left join School s2 on s1.id=s2.id         .JoinTable<STUDENT, SCHOOL, AREA>((s1, s2, a1) => a1.ID == s2.AREAID)// left join Area a1 on a1.id=s2.AreaId         .Select<STUDENT, SCHOOL, AREA, classNew>((s1, s2, a1) => new classNew { NEWID = s1.ID, STUDENTNAME = s1.NAME, SCHOOLNAME = s2.NAME, AREANAME = a1.NAME }).ToList();        //最多支持5表查询,太过复杂的建议用Sqlable或者SqlQuery,我们的Queryable只适合轻量级的查询        //拼接        var queryable = db.Queryable<STUDENT>().Where(it => true);        if (maxId.ObjToInt() == 1)        {          queryable.Where(it => it.ID == 1);        }        else        {          queryable.Where(it => it.ID == 2);        }        var listJoin = queryable.ToList();        //queryable和SqlSugarClient解耦        var par = new Queryable<STUDENT>().Where(it => it.ID == 1);//声名没有connection对象的Queryable        par.DB = db;        var listPar = par.ToList();        //查看生成的sql和参数        var id=1;        var sqlAndPars = db.Queryable<STUDENT>().Where(it => it.ID == id).OrderBy(it => it.ID).ToSql();        //函数的支持(字段暂不支持函数,只有参数支持) 目前只支持这么多        var par1 = "2015-1-1"; var par2 = "  我 有空格, ";        var r1 = db.Queryable<STUDENT>().Where(it => it.NAME == par1.ObjToString()).ToSql(); //ObjToString会将null转转成""        var r2 = db.Queryable<INSERTTEST>().Where(it => it.D1 == par1.ObjToDate()).ToSql();        var r3 = db.Queryable<INSERTTEST>().Where(it => it.ID == 1.ObjToInt()).ToSql();//ObjToInt会将null转转成0        var r4 = db.Queryable<INSERTTEST>().Where(it => it.ID == 2.ObjToDecimal()).ToSql();        var r5 = db.Queryable<INSERTTEST>().Where(it => it.ID == 3.ObjToMoney()).ToSql();        var r6 = db.Queryable<INSERTTEST>().Where(it => it.V1 == par2.Trim()).ToSql();        var convert1 = db.Queryable<STUDENT>().Where(c => c.NAME == "a".ToString()).ToList();        var convert2 = db.Queryable<STUDENT>().Where(c => c.ID == Convert.ToInt32("1")).ToList();//         var convert3 = db.Queryable<STUDENT>().Where(c => DateTime.Now > Convert.ToDateTime("2015-1-1")).ToList();        var convert4 = db.Queryable<STUDENT>().Where(c => DateTime.Now > DateTime.Now).ToList();        var c1 = db.Queryable<STUDENT>().Where(c =>c.NAME.Contains("a")).ToList();        var c2 = db.Queryable<STUDENT>().Where(c => c.NAME.StartsWith("a")).ToList();        var c3 = db.Queryable<STUDENT>().Where(c => c.NAME.EndsWith("a")).ToList();

原标题:OracleSugar ORM框架的诞生,代码开源

关键词:oracle

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录