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

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

一、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.NET——轻量ORM

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

  3. Dapper.NET—轻量ORM

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

  4. C# 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.Data 轻量数据层之路 优雅V1.4 现世 附API帮助文档(九)

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

  10. 免费申请使用IBM Cloud Lite(轻量套餐) 续

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

随机推荐

  1. 【Shell】运行shell出现-ash: ./test.sh: not found

    1.这是一个读取文件的脚本 #!/bin/bash for line in `cat pidtestconf` do echo $line done 因为命名的时候这边使用的是 test.sh 这边将 ...

  2. 深入理解JavaScript系列(31):设计模式之代理模式

    介绍 代理,顾名思义就是帮助别人做事,GoF对代理模式的定义如下: 代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问. 代理模式使得代理对象控制具体对象的引用.代理几乎可以是任何对 ...

  3. 归并排序——Java实现

    一.排序思想 将两个或两个以上的一排序文件合并成一个有序文件的过程叫归并,而归并排序就是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用.将以有序的了序列合并,得到完全有序 ...

  4. Facade模式实现文件上传(Flash+HTML5)

    一.前言 确定了渐进式增强的上传方式,接下来我们需要将上传功能从具体的业务逻辑中剥离出来,作为公共组件供业务层调用.这就要求我们必须对业务层隐藏上传细节,只暴露统一的上传API.这时候大家是不是跟我一 ...

  5. 靠谱的div引入任何外链内容

    靠谱的div引入任何外链内容 开发中经常要在div中引入一个页面,该页面可能是内部页面,可能是一个外部页面,也可能只是一个域名获取的请求. 对于内部页面的加载,建议使用jquery的load函数,如: ...

  6. python 读写Oracle10g数据简介

    1.测试环境: Centos6 X86_64python 2.6 Oracle 10g 2.安装cx_Oracle 和 Oracle InstantClient: http://www.rpmfind ...

  7. 性能优化小Tips

    Performance Tips 这篇文章主要是介绍了一些小细节的优化技巧,当这些小技巧综合使用起来的时候,对于整个App的性能提升还是有作用的,只是不能较大幅度的提升性能而已.选择合适的算法与数据结 ...

  8. wxPython控件学习之wx.grid.Grid 表格控件

    wxPython控件学习之wx.grid.Grid (包括对GridCellEditor和GridCelRender的扩展,以支持更多的grid cell 样式, 以GridCellColorEdit ...

  9. 一键生成http服务器

    如果你想用最简单的方法在内网共享目录,可以考虑为要共享的目录生成一个http服务器,这样就可以在内网任一台设备打开浏览器就可以浏览了.简单举几个例,有了这个http服务器就可以: 在手机浏览器里观看电 ...

  10. jQuery插件编写步骤详解

    如今做web开发,jquery 几乎是必不可少的,就连vs神器在2010版本开始将Jquery 及ui 内置web项目里了.至于使用jquery好处这里就不再赘述了,用过的都知道.今天我们来讨论下jq ...