Dapper扩展之~~~Dapper.Contrib

简介:

平台之大势何人能挡? 带着你的Net飞奔吧!http://www.cnblogs.com/dunitian/p/4822808.html#skill

上一篇文章:Dapper逆天入门~强类型,动态类型,多映射,多返回值,增删改查+存储过程+事物案例演示

 官方地址:https://github.com/StackExchange/dapper-dot-net/tree/master/Dapper.Contrib

实战案例:https://github.com/dunitian/LoTCode/tree/master/PawChina(更新ing)

注意点:Model里面的Table和Key是Dapper.Contrib.Extensions命名空间下的~~~~如果不是~~请看下篇文章(点我

 

用法很简单,贴一下帮助类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
/// <summary>
     /// 扩展方法
     /// </summary>
     public  abstract  partial  class  DapperDataAsync
     {
         #region 查询系
         /// <summary>
         /// 获取Model-Key为int类型
         /// </summary>
         /// <typeparam name="T"></typeparam>
         /// <param name="id"></param>
         /// <param name="transaction"></param>
         /// <param name="commandTimeout"></param>
         /// <returns></returns>
         public  static  async Task<T> GetAsync<T>( int  id, IDbTransaction transaction =  null int ? commandTimeout =  null where  T :  class new ()
         {
             using  ( var  conn = ConnFactory.GetConnection())
             {
                 return  await conn.GetAsync<T>(id, transaction, commandTimeout);
             }
         }
         /// <summary>
         /// 获取Model-Key为long类型
         /// </summary>
         /// <typeparam name="T"></typeparam>
         /// <param name="id"></param>
         /// <param name="transaction"></param>
         /// <param name="commandTimeout"></param>
         /// <returns></returns>
         public  static  async Task<T> GetAsync<T>( long  id, IDbTransaction transaction =  null int ? commandTimeout =  null where  T :  class new ()
         {
             using  ( var  conn = ConnFactory.GetConnection())
             {
                 return  await conn.GetAsync<T>(id, transaction, commandTimeout);
             }
         }
         /// <summary>
         /// 获取Model-Key为Guid类型
         /// </summary>
         /// <typeparam name="T"></typeparam>
         /// <param name="id"></param>
         /// <param name="transaction"></param>
         /// <param name="commandTimeout"></param>
         /// <returns></returns>
         public  static  async Task<T> GetAsync<T>(System.Guid id, IDbTransaction transaction =  null int ? commandTimeout =  null where  T :  class new ()
         {
             using  ( var  conn = ConnFactory.GetConnection())
             {
                 return  await conn.GetAsync<T>(id, transaction, commandTimeout);
             }
         }
         /// <summary>
         /// 获取Model-Key为string类型
         /// </summary>
         /// <typeparam name="T"></typeparam>
         /// <param name="id"></param>
         /// <param name="transaction"></param>
         /// <param name="commandTimeout"></param>
         /// <returns></returns>
         public  static  async Task<T> GetAsync<T>( string  id, IDbTransaction transaction =  null int ? commandTimeout =  null where  T :  class new ()
         {
             using  ( var  conn = ConnFactory.GetConnection())
             {
                 return  await conn.GetAsync<T>(id, transaction, commandTimeout);
             }
         }
         /// <summary>
         /// 获取Model集合(没有Where条件)
         /// </summary>
         /// <typeparam name="T"></typeparam>
         /// <returns></returns>
         public  static  async Task<IEnumerable<T>> GetAllAsync<T>()  where  T :  class new ()
         {
             using  ( var  conn = ConnFactory.GetConnection())
             {
                 return  await conn.GetAllAsync<T>();
             }
         }
         #endregion
 
         #region 增删改
         /// <summary>
         /// 插入一个Model
         /// </summary>
         /// <typeparam name="T"></typeparam>
         /// <param name="model"></param>
         /// <param name="transaction"></param>
         /// <param name="commandTimeout"></param>
         /// <param name="sqlAdapter"></param>
         /// <returns></returns>
         public  static  async Task< int > InsertAsync<T>(T model, IDbTransaction transaction =  null int ? commandTimeout =  null where  T :  class new ()
         {
             using  ( var  conn = ConnFactory.GetConnection())
             {
                 return  await conn.InsertAsync<T>(model, transaction, commandTimeout);
             }
         }
 
         /// <summary>
         /// 更新一个Model
         /// </summary>
         /// <typeparam name="T"></typeparam>
         /// <param name="connection"></param>
         /// <param name="entityToUpdate"></param>
         /// <param name="transaction"></param>
         /// <param name="commandTimeout"></param>
         /// <returns></returns>
         public  static  async Task<T> UpdateAsync<T>(T model, IDbTransaction transaction =  null int ? commandTimeout =  null where  T :  class new ()
         {
             using  ( var  conn = ConnFactory.GetConnection())
             {
                 bool  b = await conn.UpdateAsync<T>(model, transaction, commandTimeout);
                 if  (b) {  return  model; }
                 else  return  null ; }
             }
         }
         #endregion
 
         #region 分页查询
         /// <summary>
         /// 分页查询(为什么不用out,请参考:http://www.cnblogs.com/dunitian/p/5556909.html)
         /// </summary>
         /// <param name="sql">查询语句</param>
         /// <param name="p">动态参数</param>
         /// <param name="sqlTotal">total语句</param>
         /// <param name="p2">Total动态参数</param>
         /// <returns></returns>
         public  static  async Task< string > PageLoadAsync<T>( string  sql,  object  p =  null string  sqlTotal =  "" object  p2 =  null )
         {
             var  rows = await QueryAsync<T>(sql.ToString(), p);
             var  total = rows.Count();
             if  (!sqlTotal.IsNullOrWhiteSpace()) { total = await ExecuteScalarAsync< int >(sqlTotal, p2); }
             return  new  { rows = rows, total = total }.ObjectToJson();
         }
         #endregion
     }

 博客地址:http://dnt.dkill.net


本文转自毒逆天博客园博客,原文链接:http://www.cnblogs.com/dunitian/p/5710382.html,如需转载请自行联系原作者

相关文章
|
数据可视化 JavaScript 前端开发
Google开源了可视化编程框架Visual Blocks for ML
Visual Blocks for ML是一个由Google开发的开源可视化编程框架。它使你能够在易于使用的无代码图形编辑器中创建ML管道。
258 0
|
SQL C# 数据库
推荐一个Dapper扩展CRUD基本操作的开源库
推荐一个Dapper扩展CRUD基本操作的开源库
103 0
|
SQL 缓存 开发框架
推荐一个EntityFramework扩展的开源项目
通过必备功能扩展了DbContext:包括过滤器,缓存,提前查询,批量操作等EF扩展功能。
134 0
推荐一个EntityFramework扩展的开源项目
|
SQL 关系型数据库 MySQL
开源Dapper的Lambda扩展-Sikiro.Dapper.Extension V2.0
开源Dapper的Lambda扩展-Sikiro.Dapper.Extension V2.0
236 0
开源Dapper的Lambda扩展-Sikiro.Dapper.Extension V2.0
|
存储 Kubernetes Cloud Native
云原生渐进式交付,刷 Argo CD 技术文档之 Understand The Basics & Core Concepts 篇
云原生渐进式交付,刷 Argo CD 技术文档之 Understand The Basics & Core Concepts 篇
148 0
|
SQL 存储 C#
C#中如何使用Dapper
C#中如何使用Dapper
284 0
|
流计算 NoSQL
Cassandra sstableloader工具使用及原理解析
sstableloader是cassandra提供的bulkload工具,可以将sstable文件导入到集群中。本文详细介绍其用法和实现原理。 用法 sstableloader工具在cassandra的bin目录下面,用法如下: bin/sstableloader
12132 0
|
SQL 关系型数据库 测试技术
.NET轻量级ORM框架Dapper入门精通
一、课程介绍 本次分享课程包含两个部分《.NET轻量级ORM框架Dapper修炼手册》和《.NET轻量级ORM框架Dapper葵花宝典》,阿笨将带领大家一起领略轻量级ORM框架Dapper的魅力。
3055 0
|
SQL MySQL 关系型数据库
.NET轻量级ORM组件Dapper葵花宝典
一、摘要 为什么取名叫《葵花宝典》? 从行走江湖的世界角度来讲您可以理解为一本"武功秘籍",站在我们IT编程的世界角度应该叫"开发宝典"。 如果您在工作中主要接触的是操作MySQL数据库,但您又想学习和了解.NET轻量级ORM框架Dapper,那么就请跟着阿笨一起学习本次的分享课《.NET轻量级ORM框架Dapper葵花宝典》。
2226 0
|
SQL 数据库 存储
[译]Dapper教程
原文链接:Dapper Tutorial ,获取更好浏览体验请跳转到GitBook[点击访问]。 什么是Dapper Dapper是一个简单的.NET对象映射器,在速度方面具有"King of Micro ORM"的头衔,几乎与使用原始的ADO.NET数据读取器一样快。
1886 0