索引:

目录索引

一.安装

  在 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. 我们为什么要搞长沙.NET技术社区(二)

    我们为什么要搞长沙.NET技术社区(二) 某种意义上讲,长沙和中国大部分内地城市一样,都是互联网时代的灯下黑.没有真正意义上的互联网公司,例如最近发布的中国互联网企业一百强中没有一家湖南或者长沙的公司 ...

  2. Python中最好用的命令行解析工具:argparse

    Python 做为一个脚本语言,可以很方便地写各种工具.当你在服务端要运行一个工具或服务时,输入参数似乎是一种硬需(当然你也可以通过配置文件来实现). 如果要以命令行执行,那你需要解析一个命令行参数解 ...

  3. C# 数组比较--取得两个集合的交集,差集,并集的方法

    方法关键字: 交集:Intersect 差集:Except 并集:Union 使用代码: , , , , }; , , , , }; var 交集 = arr1.Intersect(arr2).ToL ...

  4. C# 23种设计模式

    目录 0).简单工厂模式 1).工厂方法模式 2).抽象工厂模式 3).单例模式 4).构建者模式 5).原型模式 6).适配器模式 7).修饰者模式 8).代理模式 9).外观模式 10).桥接模式 ...

  5. 使用d3.v5实现条形图

    效果图: 条形图: 目录结构: <!DOCTYPE html> <html lang="en"> <head> <meta charset ...

  6. 20190429 - 如何访问 macOS 的 httpd、mysql 等服务

    问题:在局域网,通过其它机器访问 macOS 上的服务时,提示拒绝. 解决:将 macOS 防火墙 80.3306 端口打开. macOS 内置防火墙,也许开启了防火墙.Icefloor 是一个老牌的 ...

  7. linux常用命令小结

    其他类 clear 清屏 文件管理 chmod 修改文件权限. 常用列表: chmod +x 使文件变为可执行文件. 常用于sh脚本. touch 创建文件 tar 压缩文件操作. -zxvf, 解压 ...

  8. hadoop 笔记(hive)

    //**********************************//安装配置1. 修改配置文件 1.1 在conf文件夹下 touch hive-site.xml <configurat ...

  9. python maximum recursion depth exceeded 处理办法

    1.在执行命令 pyinstaller -F D:\py\programe\banksystem.py打包生成.exe文件时报错:python maximum recursion depth exce ...

  10. Mac查看和杀死后台进程

    1. Mac 查看后台进程并显示 PID $ jobs -l 2. Mac 端口占用情况(将 port 改成需要查看的端口号,比如 8080) $ lsof -i tcp:port 2. 杀死进程,以 ...