当前位置: 移动技术网 > IT编程>开发语言>.net > 轻量ORM-SqlRepoEx 重大升级

轻量ORM-SqlRepoEx 重大升级

2018年10月07日  | 移动技术网IT编程  | 我要评论

客友,郭采妮,本溪红尖

 .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表达式转转上,支持复杂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中可以

 1 var repository = mssqlrepofactory.create<todo>();
 2     var results = repository.query().select(e => e.id, e => e.task);
 3     var results5 = repository.query().select(e => e.id, e => e.task)
 4           .where(c => c.id > 0 && c.id < 7);
 5     var results6 = repository.query()
 6            .select(e => e.id, e => e.task)
 7           .where(c => c.id > 10 && c.id < 15);
 8     var results2 = results.union(new list<unionsql> {
 9          unionsql.new(  results5,uniontype.union ),
10          unionsql.new(  results6,uniontype.union )  });
11     foreach (var item in results2)
12     {
13     console.writeline($"{item.id}\t {item.task} ");
14     }
view code

 

(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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网