索引:

目录索引

一.安装

  在 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 周一

最新文章

  1. maven nexus私服搭建,特别痛苦!!
  2. iOS移动下上传图片失败解决 (上传多图,带其他参数)
  3. silverlight ListBox 多列图片效果
  4. Java Blocking Queue
  5. Hbase之插入数据
  6. 为C# Windows服务添加安装程序
  7. Bean不同配置方式比较
  8. poj1458 求最长公共子序列 经典DP
  9. Web中的性能优化
  10. 在vc正在使用xtremetoolkit接口库-----使用简单的控制
  11. js中百分比运算,大型数据会算错
  12. css修改浏览器默认的滚动条样式
  13. js_base_note
  14. 【vue】饿了么项目的相关笔记链接
  15. java日志的相关配置文件知识
  16. meta标签大全(荐)
  17. 深度学习框架caffe/CNTK/Tensorflow/Theano/Torch的对比
  18. 源码安装mysql5.6x启动报错:[ERROR] Can&#39;t find messagefile &#39;/data/mysqldata/3306/english/errmsg.sys&#39;
  19. 【字符串】Simplify Path(栈)
  20. 最新的CocoaPods 安装及使用

热门文章

  1. SpringBoot当中如何整合mybatis和注入
  2. openlayers4 入门开发系列之地图标绘篇(附源码下载)
  3. ArcGIS JS API多线程克里金插值
  4. 批量插入一张表的数据,并且生成不同的uuid 字符截取 批量更新 去除重复数据
  5. 【Spring源码分析系列】ApplicationContext 相关接口架构分析
  6. java常用工具(jps等)说明
  7. Python爬虫10-页面解析数据提取思路方法与简单正则应用
  8. 微信小程序报错,不在以下 request 合法域名列表中(引起的探索)
  9. 【视频】ASP.NET Core MVC 2.* 入门
  10. 又拍云张聪:OpenResty 动态流控的几种姿势