海沧租房,粉刺针怎么用,刘玉璞
索引:
一.简介
1.适用范围:
mydal.dll 目前编译目标是 .net standard 2.0.3 ,可以在以下工程项目中引用并使用:
.net framework 4.6.1 及 next version.
.net core 2.0 及 next version.
mono 5.4 及 next version.
xamarin.ios 10.14 及 next version.
xamarin.mac 3.8 及 next version.
xamarin.android 8.0 及 next version.
uwp 10. 0. 16299 及 next version.
由于 .net standard 的跨平台开发特性,你可以在以下操作系统中部署及运行:
windows 7 sp1 x64, x86 及 next version.
windows 10 x64, x86 及 next version.
windows server 2008 r2 sp1+ x64, x86 及 next version.
redhat linux 7.3+ (包含 cent os linux) x64 及 next version.
fedora linux 25+ x64 及 next version.
debian linux 8.7+ (包含 deepin linux) x64 及 next version.
ubuntu linux 14.04+ x64, arm32[社区版] 及 next version.
opensuse linux 42.2+ x64 及 next version.
tizen linux 4+ arm32[三星版] 及 next version.
mac os x 10.12+ x64 及 next version.
2.功能特性简介:
底层代码采用 system.reflection.emit.lightweight 类库使用 il 的方式处理 model 组装,性能刚刚的~
语法采用 system.linq.expressions 方式,强类型,对程序员编码非常友好~
由于本人精通 java mybatis ,所以缓存及数据关联由此借鉴而来~
由于本人精通 ctrip dal ,所以 code first 及 db first 由此借鉴而来~
二.安装
在 vs 中执行一下 package 命令:
1 pm> install-package mydal
三.快速使用
1.命名空间,只需:
1 using mydal;
2.准备好一个 idbconnection 对象,目前只支持 mysql,后续会支持 sql server / oracle / postgre sql ... 等等:
1 private static idbconnection getopenconnection(string name) 2 { 3 /* 4 * 5 */ 6 var conn = 7 new mysqlconnection($"server=localhost; database={name}; uid=xxxxx; pwd=yyyyyyy;sslmode=none;") 8 .opendebug() // 全局 debug 配置, 生产环境不要开启 9 .opendb(); // 建议 每次新实例并打开,以获得更好的性能体验 10 return conn; 11 } 12 13 protected idbconnection conn 14 { 15 /* 16 * create database `easydal_exchange`; 17 */ 18 get { return getopenconnection("easydal_exchange"); } 19 }
3.新增一条数据:
1 var m1 = new bodyfitrecord 2 { 3 id = guid.parse("1fbd8a41-c75b-45c0-9186-016544284e2e"), 4 createdon = datetime.now, 5 userid = guid.newguid(), 6 bodymeasureproperty = "{xxx:yyy,mmm:nnn}" 7 }; 8 9 // 新建 10 var res1 = await conn 11 .creater<bodyfitrecord>() 12 .createasync(m1); 13 assert.true(res1 == 1); 14 15 var tuple1 = (xdebug.sql, xdebug.parameters,xdebug.sqlwithparams);
在 xdebug.sql 中你可以看到生成的带参数化的 sql 语句~
在 xdebug.parameters 中可以看到 参数名 及 参数名对应的参数值~
在 xdebug.sqlwithparams 中可以看到 ... ,其实就是懒人模式,直接 copy 就可以在 db 中执行了~
4.删除一条数据:
1 var id = guid.parse("1fbd8a41-c75b-45c0-9186-016544284e2e"); 2 3 var res = await conn 4 .deleter<bodyfitrecord>() 5 .where(it => it.id == id) 6 .deleteasync();
5.修改一条数据:
1 var res1 = await conn 2 .updater<bodyfitrecord>() 3 .set(it => it.createdon, datetime.now) 4 .set(it => it.bodymeasureproperty, "{xxx:yyy,mmm:nnn,zzz:aaa}") 5 .where(it => it.id == m.id) 6 .updateasync();
6.查询一条数据:
1 var res1 = await conn 2 .selecter<bodyfitrecord>() 3 .where(it => it.id == guid.parse("1fbd8a41-c75b-45c0-9186-016544284e2e")) 4 .queryfirstordefaultasync();
7.连接查询一组数据:
1 var res4 = await conn 2 .joiner<aspnetusers, aspnetuserroles, aspnetroles>(out var user4, out var userrole4, out var role4) 3 .from(() => user4) 4 .innerjoin(() => userrole4) 5 .on(() => user4.id == userrole4.userid) 6 .innerjoin(() => role4) 7 .on(() => userrole4.roleid == role4.id) 8 .orderby(() => user4.username) 9 .thenorderby(() => user4.agentlevel, orderbyenum.asc) 10 .querylistasync<aspnetusers>();
这个连接查询 产生的 sql 如下,是的你没看错,跟你手写 sql 是一模一样的:
1 select user4.`*` 2 from `aspnetusers` as user4 3 inner join `aspnetuserroles` as userrole4 on user4.`id`=userrole4.`userid` 4 inner join `aspnetroles` as role4 on userrole4.`roleid`=role4.`id` 5 order by user4.`username` desc , user4.`agentlevel` asc ;
8.与表对应的 model 如下:
/* * create table `bodyfitrecord` ( * `id` char(36) not null, * `createdon` datetime(6) not null default current_timestamp(6), * `userid` char(36) not null, * `bodymeasureproperty` longtext, * primary key (`id`) * ) engine=innodb default charset=utf8 */ [xtable("bodyfitrecord")] public class bodyfitrecord { public guid id { get; set; } public datetime createdon { get; set; } public guid userid { get; set; } public string bodymeasureproperty { get; set; } }
或者使用 .net 内置的 tableattribute 也可以:
1 /* 2 * create table `bodyfitrecord` ( 3 * `id` char(36) not null, 4 * `createdon` datetime(6) not null default current_timestamp(6), 5 * `userid` char(36) not null, 6 * `bodymeasureproperty` longtext, 7 * primary key (`id`) 8 * ) engine=innodb default charset=utf8 9 */ 10 11 [table("bodyfitrecord")] 12 public class bodyfitrecord 13 { 14 public guid id { get; set; } 15 public datetime createdon { get; set; } 16 public guid userid { get; set; } 17 public string bodymeasureproperty { get; set; } 18 }
如果你喜欢这个平台框架,别忘了在 github 上给点个 star(星) 啊~~
蒙
2018-10-22 18:30 周一
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Blazor server side 自家的一些开源的, 实用型项目的进度之 CEF客户端
.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)
vue+.netcore可支持业务代码扩展的开发框架 VOL.Vue 2.0版本发布
网友评论