欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-12-24 14:31:03
ORM-SqlRepoEx 是 .Net平台下兼容.NET Standard 2.0,一个实现以Lambda表达式转转换标准SQL语句,使用强类型操作数据的轻量级ORM工具,在减少魔法字串同时,通过灵活的Lambda表达式组合,实现业务数据查询的多样性。 ......

dapper就另一个轻量orm,dapper及其扩展解决了数据访问端的大部门问题,提供了如数据事务管理、缓存等支持。sqlrepoex的重点解决了lambda转换成sql语句,使sql使用强类型编写,减少字串错误的,实现编译时检查。

sqlrepoex同时也实现了数据的映射和访问,因而dapper并不是sqlrepoex所必需的,但dapper中有些如数据事务管理、缓存等功能还是很不错的。使用dapper需拼接sql字串,而sqlrepoex可以生成sql字串,这种结合,还是很相匹配的。

可以通过两种方式实现sqlrepoex 与 dapper 互动。

一、直接用sqlrepoex 生成sql语句,然后将此sql作参给 dapper就可以了,这种做法可以在利用sqlrepoex 强大的lambda解析sql的功能,同时也可完全使用dapper的功能,如果项目原来使用过dapper,也不会对原有代码形成任何影响。

二、使用 sqlrepoex.adapter.dapper 库,可不关心 如何使用dapper, sqlrepoex.adapter.dapper 实现了两个sqlrepoex的功能类,dapperstatementexecutor,dapperentitymapper,注册这两个类,然后,就实现了使用dapper来读写数据。

string connectionstring = "datasource=127.0.0.1;username=test;password=test;database=sqlrepotest;charset=gb2312;sslmode = none;";

var connectionprovider = new mysqlp.connectionstringconnectionprovider(connectionstring);

mysqlrepofactory.useconnectionprovider(connectionprovider);

mysqlrepofactory.usestatementexecutor(new dapperstatementexecutor(connectionprovider));

mysqlrepofactory.usedatareaderentitymapper(new dapperentitymapper());

var repository11 = mysqlrepofactory.create<todo>();

var results11 = repository11.query().select(e => e.id, e => e.task, e => e.createddate).top(6);

foreach (var item in results11.go())

{console.writeline($"{item.id}\t {item.task}\t {item.createddate}\t {item.remark}");}

本例源码见:

https://gitee.com/azthinker/sqlrepoex2.0demo/tree/master/demos/gettingstarteddapper

https://github.com/azthinker/sqlrepoex2.0demo/tree/master/demos/gettingstarteddapper

上一篇:

下一篇: