轻量ORM-SqlRepoEx 重大升级

时间:2022-12-30 20:49:41

.Net平台下兼容.NET Standard 2.0,一个实现以Lambda表达式转转换标准SQL语句,支持MySQL、SQL Server数据库方言,使用强类型操作数据的轻量级ORM工具,在减少魔法字串同时,通过灵活的Lambda表达式组合,实现业务数据查询的多样性。

演示代码:https://github.com/AzThinker/SqlRepoEx2.0Demo

轻量ORM-SqlRepoEx 重大升级

一、SqlRepoEx升级为2.0,此次升级主要变更为

1、重新组织代码结构,以支持SQL方言;

2、增加对MySQL数据访问支持;

3、增加通过Dapper进行数据访问支持;

只需几步,即可实现SqlRepoEx与

(1)、数据库连接设置

string ConnectionString = "Data Source=(Local);Initial Catalog=Northwind;User ID=test;Password=test";

var connectionProvider = new MsSQLP.ConnectionStringConnectionProvider(ConnectionString);

MsSqlRepoFactory.UseConnectionProvider(connectionProvider);

(2)、注册Dapper解释器

MsSqlRepoFactory.UseStatementExecutor(new DapperStatementExecutor(connectionProvider));

MsSqlRepoFactory.UseDataReaderEntityMapper(new DapperEntityMapper());

(3)、标准SqlRepoEx数据访问

var repository = MsSqlRepoFactory.Create<Customers>();

var result = repository.Query().Select(e => e.CustomerID, e => e.CompanyName, e => e.Address).Top(10);

(4)、支持复杂Lambda语法解析;

SqlRepoEx1.1的where语句只支持单一表达式: Where(c => c.Id == 9),如果使用 Where(c => c.Id == 9 && c.Id == 10 ),则会报错;

SqlRepoEx2.0可以使用:Where(c => c.Id > 0 && c.Id < 30 && c.Remark.Contains("a"))的更自然的语法;

(5)、增加对Union操作支持

SqlRepoEx1.1不支持Union操作;

在SqlRepoEx2.0中可以

 var repository = MsSqlRepoFactory.Create<ToDo>();
var results = repository.Query().Select(e => e.Id, e => e.Task);
var results5 = repository.Query().Select(e => e.Id, e => e.Task)
.Where(c => c.Id > && c.Id < );
var results6 = repository.Query()
.Select(e => e.Id, e => e.Task)
.Where(c => c.Id > && c.Id < );
var results2 = results.Union(new List<UnionSql> {
UnionSql.New( results5,UnionType.Union ),
UnionSql.New( results6,UnionType.Union ) });
foreach (var item in results2)
{
Console.WriteLine($"{item.Id}\t {item.Task} ");
}

(6)、增强Join语法

var repository = MsSqlRepoFactory.Create<ToDo>();

var results1 = repository.Query()

.InnerJoin<TaskRemark>()

// 增加附加条件,如果主选择有此属性,则查询本句中所设置

.On<TaskRemark>((r, l) => r.Task == l.Task, l => l.Remark);

Console.WriteLine(results1.Sql());

二、可通过Nuget获得

(一)、MS SQL SqlServer

1、使用 Autofac 时

Install-Package SqlRepoEx.MsSql.Autofac -Version 2.0.1

2、Asp.Net Core

Install-Package SqlRepoEx.MsSql.ServiceCollection -Version 2.0.1

3、手动实例时

Install-Package SqlRepoEx.MsSql.Static -Version 2.0.1

(二)、MySQL

1、使用 Autofac 时

Install-Package SqlRepoEx.MySql.Autofac -Version 2.0.1

2、Asp.Net Core

Install-Package SqlRepoEx.MySql.ServiceCollection -Version 2.0.1

3、手动实例时

Install-Package SqlRepoEx.MySql.Static -Version 2.0.1

(三)、支持Dapper

Install-Package SqlRepoEx.Adapter.Dapper -Version 1.0.1

(四)、通用SQL

Install-Package SqlRepoEx.Normal -Version 2.0.1

(五)、案例源码

https://github.com/AzThinker/SqlRepoEx2.0Demo

如使用中有任何问题,请告知

1、通过评论;

2、可通过电邮 azthinker@sina.com;

3、有兴趣的请在QQ群中参与讨论、联系作者  QQ群名称:ATK高效开发 ,QQ群号:747049962

轻量ORM-SqlRepoEx 重大升级的更多相关文章

  1. SqlSugar轻量ORM

      蓝灯软件数据股份有限公司项目,代码开源. SqlSugar是一款轻量级的MSSQL ORM ,除了具有媲美ADO的性能外还具有和EF相似简单易用的语法. 学习列表 0.功能更新 1.SqlSuga ...

  2. Dapper&period;NET——轻量ORM

    Dapper.NET使用 http://www.cnblogs.com/yankliu-vip/p/4182892.html 本文目录 Dapper.NET使用 1.为什么选择Dapper 2.以Da ...

  3. Dapper&period;NET—轻量ORM

    Dapper.NET使用 本文目录 Dapper.NET使用 1.为什么选择Dapper 2.以Dapper(4.0)为例. 2.1 在数据库中建立几张表. 2.2实体类. 3.使用方法 3.1  一 ...

  4. C&num; Dapper 轻量ORM调试对SQLServer

    Dapper简介 Dapper只有一个代码文件,完全开源,你可以放在项目里的任何位置,来实现数据到对象的ORM操作,体积小速度快. 使用ORM的好处是增.删.改很快,不用自己写sql,因为这都是重复技 ...

  5. 轻量ORM-SqlRepoEx (九)与Dapper共舞

    Dapper就另一个轻量ORM,Dapper及其扩展解决了数据访问端的大部门问题,提供了如数据事务管理.缓存等支持.SqlRepoEx的重点解决了Lambda转换成SQL语句,使SQL使用强类型编写, ...

  6. 轻量型ORM框架Dapper的使用

    在真实的项目开发中,可能有些人比较喜欢写SQL语句,但是对于EF这种ORM框架比较排斥,那么轻量型的Dapper就是一个不错的选择,即让你写sql语句了,有进行了关系对象映射.其实对于EF吧,我说下我 ...

  7. 轻量ORM-SqlRepoEx介绍

    轻量级 ORM-SqlRepoEx 介绍 SqlRepoEx是 .Net平台下兼容.NET Standard 2.0人一个轻型的ORM.解决了Lambda转Sql语句这一难题,SqlRepoEx使用的 ...

  8. OWIN轻量型框架介绍

    OWIN轻量型框架介绍 阅读目录 引言 框架的特色 如何启动 各项功能 静态路由的3种写法 伪静态路由的支持 处理Form表单提交的文件 流式处理Post请求的数据 多种请求类型自动识别 响应处理 请 ...

  9. CYQ&period;Data 轻量数据层之路 优雅V1&period;4 现世 附API帮助文档&lpar;九&rpar;

    继上一版本V1.3版本发布到现在,时隔N天了:[V1.3版本开源见:CYQ.Data 轻量数据层之路 华丽V1.3版本 框架开源] N天的时间,根据各路网友的反映及自身的想法,继续修改优化着本框架,力 ...

  10. 免费申请使用IBM Cloud Lite&lpar;轻量套餐&rpar; 续

    之前尝试申请了IBM的轻量套餐,过程很简单,操作起来也比较方便,就是能够用到的地方不多,虽说几乎是无限流量且永久免费,我能做的也只是做个小网站 免费用户默认的是轻量应用服务,如果需要功能更多更全的应用 ...

随机推荐

  1. &lbrack;Android Pro&rsqb; app&lowbar;process command in Android

    reference to : http://blog.csdn.net/wangkaiblog/article/details/46050587 本来以为存放在/systen/bin/下的monkey ...

  2. 【JAVA反射机制】

    一.Class类 Java.lang.Object |-java.lang.Class<T> 构造方法:无. 常用方法: static Class<?> forName(Str ...

  3. 【软件工程】用map 实现把英语文本文件词和个数打印出来

    #include <iostream> #include <fstream> #include <string> #include <map> usin ...

  4. Word中字体背景有白块咋办

      如下图,主要是从新浪博客贴过来的,先用记事本很麻烦. 1. 记事本转帖,麻烦,有公式的话需要单独处理,更麻烦 2.菜单栏中的油漆桶(段落那),有时候不行. 3.粘到QQ对话框再占回来,完美. 4. ...

  5. ZOJ 3326 An Awful Problem 模拟

    只有在 Month 和 Day 都为素数的时候才能得到糖 那就模拟一遍时间即可. //#pragma comment(linker, "/STACK:16777216") //fo ...

  6. wineshark分析抓取本地回环包

    wineshark分析抓取本地回环包 摘要 由于windows系统没有提供本地回环网络的接口,用Wireshark监控网络的话看不到localhost的流量.想要获取本地的网络数据包,可以通过一款小巧 ...

  7. 取KindEditor中的textarea的值区不到的解决方案,固定kindEditor的高度

     可以通过下面的方式取到textarea的值 var content = $(document.getElementsByTagName('iframe')[0].contentWindow.do ...

  8. Spring Aop底层原理详解

    Spring Aop底层原理详解(来源于csdn:https://blog.csdn.net/baomw)

  9. centos7如何使用yum命令

    参照https://www.cnblogs.com/zhongguiyao/p/9029922.html 参照https://blog.csdn.net/shuaigexiaobo/article/d ...

  10. 从统计局采集最新的省市区县数据,纯js

    本文更新(移步查阅): 19-04-15 新采集了2018的省市区三级坐标和行政区域边界 19-03-22 采集了2018的城市数据 18-11-28 采集了2017的城市数据 数据下载 GitHub ...