索引:

目录索引

一.安装

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

  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. maven下载及安装最详解

    maven的下载及安装 1.maven下载地址:https://maven.apache.org/download.cgi 2.将下载的安装包解压到自定义目录 3.配置环境变量 此电脑->右键属 ...

  2. 记录一些flutter学习网址

    字体图标生成 http://fluttericon.com/Flutter中文网 https://flutterchina.club Flutter官网 https://flutter.ioFlutt ...

  3. 20190415 - iOS11 无法连接到 App Store 的解决办法

    问题:更新 iOS 11 后,打开 App Store 提示: 无法连接至 app store 解决: 进入 iOS 系统[设置][iTunes Store 与 App Store],退出当前登录用户 ...

  4. Loj #2192. 「SHOI2014」概率充电器

    Loj #2192. 「SHOI2014」概率充电器 题目描述 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品--概率充电器: 「采用全新纳米级加工技术,实现元件与导线能否通电完 ...

  5. Luogu P5290 [十二省联考2019]春节十二响

    这题是最近看到的今年省选题中最良心的一道了吧 看题+想题+写题都可以在0.5h内解决,送分含义明显啊 首先理解了题意后我们很快就能发现两个点如果要被分在一段那么必须在它们的祖先处合并 首先我们考虑下二 ...

  6. 【JavaScript动画基础】学习笔记(一)-- 旋转箭头

    随着鼠标的移动旋转箭头. requestAnimationFrame 在requestAnimationFrame之前我们可以用setInterval来实现动画的循环: function drawFr ...

  7. 用ASP.NET Core 2.1 建立规范的 REST API -- 缓存和并发

    本文所需的一些预备知识可以看这里: http://www.cnblogs.com/cgzl/p/9010978.html 和 http://www.cnblogs.com/cgzl/p/9019314 ...

  8. 【深度学习】--GAN从入门到初始

    一.前述 GAN,生成对抗网络,在2016年基本火爆深度学习,所有有必要学习一下.生成对抗网络直观的应用可以帮我们生成数据,图片. 二.具体 1.生活案例 比如假设真钱 r 坏人定义为G  我们通过 ...

  9. ionic4 混合移动开发 (前世今生)

    ionic 从2016年初识,经历了 ionic2 ionic3.至今 ionic4,终于在2018年7月份发布了测试版. ionic Framework 可以说得上是最接近原生app的ui组件,漂亮 ...

  10. WebApiClient的JsonPatch局部更新

    1. 文章目的 随着WebApiClient的不断完善,越来越多开发者选择WebApiClient替换原生的HttpClient,本文将介绍使用WebApiClient来完成JsonPatch提交的新 ...