MyDAL - 快速使用
索引:
一.安装
在 VS 中执行一下 package 命令:
- PM> Install-Package MyDAL
二.API-快速使用
1.命名空间,只需:
- using MyDAL;
2.准备好一个 XConnection 对象,目前支持 MySQL / SQL Server ,后续会支持 Oracle / Postgre SQL ... 等等:
以 MySQL 为例,如下:
- //
- // Nuget : Package : MySql.Data
- //
- // 不同版本 mysql 连接字符串一般如下:
- // "Server=localhost; Database=MyDAL_TestDB; Uid=SkyUser; Pwd=Sky@4321;"
- // "Server=localhost; Database=MyDAL_TestDB; Uid=SkyUser; Pwd=Sky@4321;SslMode=none;"
- // "Server=localhost; Database=MyDAL_TestDB; Uid=SkyUser; Pwd=Sky@4321;SslMode=none;allowPublicKeyRetrieval=true;"
- //
- var Conn =
- new XConnection
- (
- new MySqlConnection
- ("Server=localhost; Database=MyDAL_TestDB; Uid=SkyUser; Pwd=Sky@4321;SslMode=none;allowPublicKeyRetrieval=true;")
- );
3.新增一条数据:
- var pk = Guid.Parse("8f2cbb64-8356-4482-88ee-016558c05b2d");
- var m15 = new AlipayPaymentRecord
- {
- Id = pk,
- CreatedOn = DateTime.Parse("2018-08-20 19:12:05.933786"),
- PaymentRecordId = Guid.Parse("e94f747e-1a6d-4be6-af51-016558c05b29"),
- OrderId = Guid.Parse("f60f08e7-9678-41a8-b4aa-016558c05afc"),
- TotalAmount = 0.010000000000000000000000000000M,
- Description = null,
- PaymentSN = "",
- PayedOn = DateTime.Parse("2018-08-20 20:36:35.720525"),
- CanceledOn = null,
- PaymentUrl = "https://openapi.xxx?charset=UTF-8&app_id=zzz&version=1.0"
- };
- // 新增一条数据: AlipayPaymentRecord
- var res15 = await Conn.CreateAsync(m15);
以 MySQL 为例,生成 SQL 如下:
- insert into `AlipayPaymentRecord`
- (`Id`,`CreatedOn`,`PaymentRecordId`,`OrderId`,`TotalAmount`,`Description`,`PaymentSN`,`PayedOn`,`CanceledOn`,`PaymentUrl`)
- values
- (?Id_2,?CreatedOn_3,?PaymentRecordId_4,?OrderId_5,?TotalAmount_6,
5 ?Description_7,?PaymentSN_8,?PayedOn_9,?CanceledOn_10,?PaymentUrl_11);
4.删除一条数据:
- var pk = Guid.Parse("8f2cbb64-8356-4482-88ee-016558c05b2d");
- // 删除一条数据: AlipayPaymentRecord
- await Conn.DeleteAsync<AlipayPaymentRecord>(it=>it.Id==pk);
以 MySQL 为例,生成 SQL 如下:
- delete
- from `AlipayPaymentRecord`
- where `Id`=?Id_1;
5.修改一条数据:
- var pk1 = Guid.Parse("8f2cbb64-8356-4482-88ee-016558c05b2d");
- // 修改一条数据: AlipayPaymentRecord
- var res1 = await Conn.UpdateAsync<AlipayPaymentRecord>(it=>it.Id==pk1, new // where 条件: it=>it.Id==pk1
- {
- Description = "new desc", // 修改 AlipayPaymentRecord 字段 Description 的值为: "new desc"
- PaymentUrl = "new url" // 修改 AlipayPaymentRecord 字段 PaymentUrl 的值为: "new url"
- });
以 MySQL 为例,生成 SQL 如下:
- update `AlipayPaymentRecord`
- set `Description`=?Description_1,
- `PaymentUrl`=?PaymentUrl_2
- where `Id`=?Id_3;
6.单表 查询一条数据:
- var pk1 = Guid.Parse("8f2cbb64-8356-4482-88ee-016558c05b2d");
- // 查询一条数据: AlipayPaymentRecord
- var res11 = await Conn.QueryOneAsync<AlipayPaymentRecord>(it=>it.Id==pk1);
以 MySQL 为例,生成 SQL 如下:
- select *
- from `AlipayPaymentRecord`
- where `Id`=?Id_1
- limit 0,1;
7.多表连接 查询一组数据:
- var res4 = await Conn
- .Queryer(out AspnetUsers user4, out AspnetUserRoles userRole4, out AspnetRoles role4)
- .From(() => user4)
- .InnerJoin(() => userRole4)
- .On(() => user4.Id == userRole4.UserId)
- .InnerJoin(() => role4)
- .On(() => userRole4.RoleId == role4.Id)
- .Where(() => user4.NickName.StartsWith("刘"))
- .OrderBy(() => user4.UserName)
- .ThenOrderBy(() => user4.AgentLevel, OrderByEnum.Asc)
- .QueryListAsync<AspnetUsers>();
以 MySQL 为例,生成 SQL 如下:
- select user4.`*`
- from `AspNetUsers` as user4
- inner join AspNetUserRoles as userRole4
- on user4.`Id`=userRole4.`UserId`
- inner join AspNetRoles as role4
- on userRole4.`RoleId`=role4.`Id`
- where user4.`NickName` like ?NickName_6
- order by user4.`UserName` desc ,user4.`AgentLevel` asc ;
8.与表对应的 Model 如下:
- /*
- * CREATE TABLE `alipaypaymentrecord` (
- * `Id` char(36) NOT NULL,
- * `CreatedOn` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
- * `PaymentRecordId` char(36) NOT NULL,
- * `OrderId` char(36) NOT NULL,
- * `TotalAmount` decimal(65,30) NOT NULL,
- * `Description` longtext,
- * `PaymentSN` longtext,
- * `PayedOn` datetime(6) DEFAULT NULL,
- * `CanceledOn` datetime(6) DEFAULT NULL,
- * `PaymentUrl` longtext,
- * PRIMARY KEY (`Id`)
- *) ENGINE=InnoDB DEFAULT CHARSET=utf8
- */
- [XTable(Name = "AlipayPaymentRecord")] // XTableAttribute 指明 该 Model 对应 DB 中的 table 名.
- public class AlipayPaymentRecord
- {
- public Guid Id { get; set; }
- public DateTime CreatedOn { get; set; }
- public Guid PaymentRecordId { get; set; }
- public Guid OrderId { get; set; }
- public decimal TotalAmount { get; set; }
- public string Description { get; set; }
- public string PaymentSN { get; set; }
- public DateTime? PayedOn { get; set; }
- public DateTime? CanceledOn { get; set; }
- public string PaymentUrl { get; set; }
- }
9.快速查看 语句 对应生成的 SQL,如下:
在 VS 输出 窗口 可以看到 语句执行前 对应 生成 的 参数化 SQL 例如 -- 新增如下:
如果你喜欢这个平台框架,别忘了在 Github 上给点个 Star(星) 啊~~
蒙
2018-10-22 18:30 周一
2018-11-18 16:53 周日
2018-12-27 21:30 周四
2019-02-07 23:55 周四
2019-02-24 17:38 周日
2019-04-12 17:56 周五
2019-05-05 15:38 周日
2019-05-20 17:50 周一
MyDAL - 快速使用的更多相关文章
- 快速构建H5单页面切换骨架
在Web App和Hybrid App横行的时代,为了拥有更好的用户体验,单页面应用顺势而生,单页面应用简称`SPA`,即Single Page Application,就是只有一个HTML页面的应用 ...
- .net core快速上手
2014年11月12日的Connect ();开发者活动上宣布将.NET堆栈基于MIT协议开源,并且提供开源保证,托管在Github上.当时的版本与最终目标相距甚远,然而有一点可以肯定的是,这是一个与 ...
- Web Api 入门实战 (快速入门+工具使用+不依赖IIS)
平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...
- SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)
SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...
- 快速搭建springmvc+spring data jpa工程
一.前言 这里简单讲述一下如何快速使用springmvc和spring data jpa搭建后台开发工程,并提供了一个简单的demo作为参考. 二.创建maven工程 http://www.cnblo ...
- 如何快速优化手游性能问题?从UGUI优化说起
WeTest 导读 本文作者从自身多年的Unity项目UI开发及优化的经验出发,从UGUI,CPU,GPU以及unity特有资源等几个维度,介绍了unity手游性能优化的一些方法. 在之前的文 ...
- Photoshop将普通照片快速制作二次元漫画风格效果
今天为大家分享Photoshop将普通照片快速制作二次元漫画风格效果,教程很不错,对于喜欢漫画的朋友可以参考本文,希望能对大家有所帮助! 一提到日本动画电影,大家第一印象肯定是宫崎骏,但是日本除了宫崎 ...
- CRL快速开发框架系列教程十三(嵌套查询)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- CRL快速开发框架系列教程十二(MongoDB支持)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
随机推荐
- DevOps实践之一:基于Docker构建企业Jenkins CI平台
基于Docker构建企业Jenkins CI平台 一.什么是CI 持续集成(Continuous integration)是一种软件开发实践,每次集成都通过自动化的构建(包括编译,发布,自动化测试)来 ...
- Docker最全教程之使用TeamCity来完成内部CI、CD流程(十六)
本篇教程主要讲解基于容器服务搭建TeamCity服务,并且完成内部项目的CI流程配置.教程中也分享了一个简单的CI.CD流程,仅作探讨.不过由于篇幅有限,完整的DevOps,我们后续独立探讨. 为了降 ...
- 改造断路器集群监控Hystrix Turbine实现自动注册消费者、实时监控多个服务
在上一篇文章中,我们搭建了Hystrix Dashoard,对指定接口进行监控.但是只能对一个接口进行监听,功能比较局限: Turbine:汇总系统内多个服务的数据并显示到 Hystrix Dashb ...
- [转]webstorm中js文件被识别成txt类型
问题描述: webstorm中index.js文件被识别成txt格式,如下图. 原因: webstorm中js文件被识别成txt文件,原因在于txt类型识别了以当前js文件名命名的模式. 解决办法: ...
- Android之日志管理(Log)
##文章大纲一.为什么要使用日志管理工具二.日志管理工具实战三.项目源码下载 ##一.为什么要使用日志管理工具###1. 对IT安全至关重要 当您使用强大的日志管理软件自动触发以保护您的系统时,您已 ...
- 阿里云对象存储OSS访问控制
阿里云对象存储OSS的Android SDK提供了STS鉴权模式和自签名模式来保障移动终端的安全性. OSS可以通过阿里云STS (Security Token Service) 进行临时授权访问.交 ...
- RFID和QRCODE对比
1.技术介绍 1.1 RFID 射频识别,RFID(Radio Frequency Identification)技术,又称无线射频识别,是一种通信技术,可通过无线电讯号识别特定目标并读写相关数据,而 ...
- ASP.NET Aries 高级开发教程:Excel导入配置之规则说明(下)
前言: 前面两篇都是大体介绍流程,有一些配置细节,没有细说,这里用一篇补上. 1.Excel配置项 起始行索引.列头跨行数: 对于自定义的Excel导入模板(有时候模板是由客户提供,模板的规则很乱) ...
- 免费申请使用IBM Cloud Lite(轻量套餐) 续
之前尝试申请了IBM的轻量套餐,过程很简单,操作起来也比较方便,就是能够用到的地方不多,虽说几乎是无限流量且永久免费,我能做的也只是做个小网站 免费用户默认的是轻量应用服务,如果需要功能更多更全的应用 ...
- Java数据结构和算法 - OverView
Q: 为什么要学习数据结构与算法? A: 如果说Java语言是自动档轿车,C语言就是手动档吉普.数据结构呢?是变速箱的工作原理.你完全可以不知道变速箱怎样工作,就把自动档的车子从1档开到4档,而且未必 ...