索引:

目录索引

一.安装

  在 VS 中执行一下 package 命令:  

  1. PM> Install-Package MyDAL

二.API-快速使用

  1.命名空间,只需:

  1. using MyDAL;

  2.准备好一个 XConnection 对象,目前支持 MySQL / SQL Server ,后续会支持  Oracle / Postgre SQL ... 等等:

    以 MySQL 为例,如下:

  1. //
  2. // Nuget : Package : MySql.Data
  3. //
  4. // 不同版本 mysql 连接字符串一般如下:
  5. // "Server=localhost; Database=MyDAL_TestDB; Uid=SkyUser; Pwd=Sky@4321;"
  6. // "Server=localhost; Database=MyDAL_TestDB; Uid=SkyUser; Pwd=Sky@4321;SslMode=none;"
  7. // "Server=localhost; Database=MyDAL_TestDB; Uid=SkyUser; Pwd=Sky@4321;SslMode=none;allowPublicKeyRetrieval=true;"
  8. //
  9. var Conn =
  10. new XConnection
  11. (
  12. new MySqlConnection
  13. ("Server=localhost; Database=MyDAL_TestDB; Uid=SkyUser; Pwd=Sky@4321;SslMode=none;allowPublicKeyRetrieval=true;")
  14. );

  3.新增一条数据:

  1. var pk = Guid.Parse("8f2cbb64-8356-4482-88ee-016558c05b2d");
  2. var m15 = new AlipayPaymentRecord
  3. {
  4. Id = pk,
  5. CreatedOn = DateTime.Parse("2018-08-20 19:12:05.933786"),
  6. PaymentRecordId = Guid.Parse("e94f747e-1a6d-4be6-af51-016558c05b29"),
  7. OrderId = Guid.Parse("f60f08e7-9678-41a8-b4aa-016558c05afc"),
  8. TotalAmount = 0.010000000000000000000000000000M,
  9. Description = null,
  10. PaymentSN = "",
  11. PayedOn = DateTime.Parse("2018-08-20 20:36:35.720525"),
  12. CanceledOn = null,
  13. PaymentUrl = "https://openapi.xxx?charset=UTF-8&app_id=zzz&version=1.0"
  14. };
  15.  
  16. // 新增一条数据: AlipayPaymentRecord
  17. var res15 = await Conn.CreateAsync(m15);

    以 MySQL 为例,生成 SQL 如下:

  1. insert into `AlipayPaymentRecord`
  2. (`Id`,`CreatedOn`,`PaymentRecordId`,`OrderId`,`TotalAmount`,`Description`,`PaymentSN`,`PayedOn`,`CanceledOn`,`PaymentUrl`)
  3. values
  4. (?Id_2,?CreatedOn_3,?PaymentRecordId_4,?OrderId_5,?TotalAmount_6,
    5 ?Description_7,?PaymentSN_8,?PayedOn_9,?CanceledOn_10,?PaymentUrl_11);

  4.删除一条数据:

  1. var pk = Guid.Parse("8f2cbb64-8356-4482-88ee-016558c05b2d");
  2.  
  3. // 删除一条数据: AlipayPaymentRecord
  4. await Conn.DeleteAsync<AlipayPaymentRecord>(it=>it.Id==pk);

    以 MySQL 为例,生成 SQL 如下:

  1. delete
  2. from `AlipayPaymentRecord`
  3. where `Id`=?Id_1;

  5.修改一条数据:

  1. var pk1 = Guid.Parse("8f2cbb64-8356-4482-88ee-016558c05b2d");
  2.  
  3. // 修改一条数据: AlipayPaymentRecord
  4. var res1 = await Conn.UpdateAsync<AlipayPaymentRecord>(it=>it.Id==pk1, new // where 条件: it=>it.Id==pk1
  5. {
  6. Description = "new desc", // 修改 AlipayPaymentRecord 字段 Description 的值为: "new desc"
  7. PaymentUrl = "new url" // 修改 AlipayPaymentRecord 字段 PaymentUrl 的值为: "new url"
  8. });

    以 MySQL 为例,生成 SQL 如下:

  1. update `AlipayPaymentRecord`
  2. set `Description`=?Description_1,
  3. `PaymentUrl`=?PaymentUrl_2
  4. where `Id`=?Id_3;

  6.单表 查询一条数据:

  1. var pk1 = Guid.Parse("8f2cbb64-8356-4482-88ee-016558c05b2d");
  2.  
  3. // 查询一条数据: AlipayPaymentRecord
  4. var res11 = await Conn.QueryOneAsync<AlipayPaymentRecord>(it=>it.Id==pk1);

    以 MySQL 为例,生成 SQL 如下:

  1. select *
  2. from `AlipayPaymentRecord`
  3. where `Id`=?Id_1
  4. limit 0,1;

  7.多表连接 查询一组数据:  

  1. var res4 = await Conn
  2. .Queryer(out AspnetUsers user4, out AspnetUserRoles userRole4, out AspnetRoles role4)
  3. .From(() => user4)
  4. .InnerJoin(() => userRole4)
  5. .On(() => user4.Id == userRole4.UserId)
  6. .InnerJoin(() => role4)
  7. .On(() => userRole4.RoleId == role4.Id)
  8. .Where(() => user4.NickName.StartsWith("刘"))
  9. .OrderBy(() => user4.UserName)
  10. .ThenOrderBy(() => user4.AgentLevel, OrderByEnum.Asc)
  11. .QueryListAsync<AspnetUsers>();

    以 MySQL 为例,生成 SQL 如下:

  1. select user4.`*`
  2. from `AspNetUsers` as user4
  3. inner join AspNetUserRoles as userRole4
  4. on user4.`Id`=userRole4.`UserId`
  5. inner join AspNetRoles as role4
  6. on userRole4.`RoleId`=role4.`Id`
  7. where user4.`NickName` like ?NickName_6
  8. order by user4.`UserName` desc ,user4.`AgentLevel` asc ;

  8.与表对应的 Model 如下:  

  1. /*
  2. * CREATE TABLE `alipaypaymentrecord` (
  3. * `Id` char(36) NOT NULL,
  4. * `CreatedOn` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
  5. * `PaymentRecordId` char(36) NOT NULL,
  6. * `OrderId` char(36) NOT NULL,
  7. * `TotalAmount` decimal(65,30) NOT NULL,
  8. * `Description` longtext,
  9. * `PaymentSN` longtext,
  10. * `PayedOn` datetime(6) DEFAULT NULL,
  11. * `CanceledOn` datetime(6) DEFAULT NULL,
  12. * `PaymentUrl` longtext,
  13. * PRIMARY KEY (`Id`)
  14. *) ENGINE=InnoDB DEFAULT CHARSET=utf8
  15. */
  16. [XTable(Name = "AlipayPaymentRecord")] // XTableAttribute 指明 该 Model 对应 DB 中的 table 名.
  17. public class AlipayPaymentRecord
  18. {
  19. public Guid Id { get; set; }
  20. public DateTime CreatedOn { get; set; }
  21. public Guid PaymentRecordId { get; set; }
  22. public Guid OrderId { get; set; }
  23. public decimal TotalAmount { get; set; }
  24. public string Description { get; set; }
  25. public string PaymentSN { get; set; }
  26. public DateTime? PayedOn { get; set; }
  27. public DateTime? CanceledOn { get; set; }
  28. public string PaymentUrl { get; set; }
  29. }

  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 - 快速使用的更多相关文章

  1. 快速构建H5单页面切换骨架

    在Web App和Hybrid App横行的时代,为了拥有更好的用户体验,单页面应用顺势而生,单页面应用简称`SPA`,即Single Page Application,就是只有一个HTML页面的应用 ...

  2. .net core快速上手

    2014年11月12日的Connect ();开发者活动上宣布将.NET堆栈基于MIT协议开源,并且提供开源保证,托管在Github上.当时的版本与最终目标相距甚远,然而有一点可以肯定的是,这是一个与 ...

  3. Web Api 入门实战 (快速入门+工具使用+不依赖IIS)

    平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...

  4. SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)

     SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...

  5. 快速搭建springmvc+spring data jpa工程

    一.前言 这里简单讲述一下如何快速使用springmvc和spring data jpa搭建后台开发工程,并提供了一个简单的demo作为参考. 二.创建maven工程 http://www.cnblo ...

  6. 如何快速优化手游性能问题?从UGUI优化说起

    WeTest 导读   本文作者从自身多年的Unity项目UI开发及优化的经验出发,从UGUI,CPU,GPU以及unity特有资源等几个维度,介绍了unity手游性能优化的一些方法.   在之前的文 ...

  7. Photoshop将普通照片快速制作二次元漫画风格效果

    今天为大家分享Photoshop将普通照片快速制作二次元漫画风格效果,教程很不错,对于喜欢漫画的朋友可以参考本文,希望能对大家有所帮助! 一提到日本动画电影,大家第一印象肯定是宫崎骏,但是日本除了宫崎 ...

  8. CRL快速开发框架系列教程十三(嵌套查询)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  9. CRL快速开发框架系列教程十二(MongoDB支持)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

随机推荐

  1. DevOps实践之一:基于Docker构建企业Jenkins CI平台

    基于Docker构建企业Jenkins CI平台 一.什么是CI 持续集成(Continuous integration)是一种软件开发实践,每次集成都通过自动化的构建(包括编译,发布,自动化测试)来 ...

  2. Docker最全教程之使用TeamCity来完成内部CI、CD流程(十六)

    本篇教程主要讲解基于容器服务搭建TeamCity服务,并且完成内部项目的CI流程配置.教程中也分享了一个简单的CI.CD流程,仅作探讨.不过由于篇幅有限,完整的DevOps,我们后续独立探讨. 为了降 ...

  3. 改造断路器集群监控Hystrix Turbine实现自动注册消费者、实时监控多个服务

    在上一篇文章中,我们搭建了Hystrix Dashoard,对指定接口进行监控.但是只能对一个接口进行监听,功能比较局限: Turbine:汇总系统内多个服务的数据并显示到 Hystrix Dashb ...

  4. [转]webstorm中js文件被识别成txt类型

    问题描述: webstorm中index.js文件被识别成txt格式,如下图. 原因: webstorm中js文件被识别成txt文件,原因在于txt类型识别了以当前js文件名命名的模式. 解决办法: ...

  5. Android之日志管理(Log)

    ##文章大纲一.为什么要使用日志管理工具二.日志管理工具实战三.项目源码下载 ##一.为什么要使用日志管理工具###1. 对IT安全至关重要  当您使用强大的日志管理软件自动触发以保护您的系统时,您已 ...

  6. 阿里云对象存储OSS访问控制

    阿里云对象存储OSS的Android SDK提供了STS鉴权模式和自签名模式来保障移动终端的安全性. OSS可以通过阿里云STS (Security Token Service) 进行临时授权访问.交 ...

  7. RFID和QRCODE对比

    1.技术介绍 1.1 RFID 射频识别,RFID(Radio Frequency Identification)技术,又称无线射频识别,是一种通信技术,可通过无线电讯号识别特定目标并读写相关数据,而 ...

  8. ASP.NET Aries 高级开发教程:Excel导入配置之规则说明(下)

    前言: 前面两篇都是大体介绍流程,有一些配置细节,没有细说,这里用一篇补上. 1.Excel配置项 起始行索引.列头跨行数: 对于自定义的Excel导入模板(有时候模板是由客户提供,模板的规则很乱) ...

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

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

  10. Java数据结构和算法 - OverView

    Q: 为什么要学习数据结构与算法? A: 如果说Java语言是自动档轿车,C语言就是手动档吉普.数据结构呢?是变速箱的工作原理.你完全可以不知道变速箱怎样工作,就把自动档的车子从1档开到4档,而且未必 ...