平台之大势何人能挡? 带着你的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命名空间下的~~~~如果不是~~请看下篇文章(点我

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

/// <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
}

Dapper扩展之~~~Dapper.Contrib的更多相关文章

  1. Asp.net 面向接口可扩展框架之数据处理模块及EntityFramework扩展和Dapper扩展(含干货)

    接口数据处理模块是什么意思呢?实际上很简单,就是使用面向接口的思想和方式来做数据处理. 还提到EntityFramework和Dapper,EntityFramework和Dapper是.net环境下 ...

  2. dapper 扩展插件: Rainbow

    dapper 扩展插件: Rainbow dapper 是一个效率非常高的orm  框架 ,效率要远远大于 我们大微软的EF .    它只有一个类文件,非常之小. 1,首先下载dapper  这里下 ...

  3. NET Core 实战 Dapper 扩展数据访问

    NET Core 实战:基于 Dapper 扩展你的数据访问方法 一.前言 在非静态页面的项目开发中,必定会涉及到对于数据库的访问,最开始呢,我们使用 Ado.Net,通过编写 SQL 帮助类帮我们实 ...

  4. .NET MVC5+ Dapper+扩展+AutoFac自动注入实现

    1.首先创建一个MVC项目 定义Model 层  view 层 index.cshtml  控制器层Controllers等文件 2.在线安装或者引用dapper 以及扩展相关包 同时Autofac ...

  5. .NET MVC5+ Dapper+扩展+微软Unity依赖注入实例

    1.dapper和dapper扩展需要在线安装或者引用DLL即可 使用nuget为项目增加Unity相关的包 2.model类 public class UserInfo { public int I ...

  6. Dapper扩展Dapper.Common框架 Linq To Sql 底层源码.net ORM框架

    源代码:https://github.com/1448376744/Dapper.CommonNUGET: Dapper.CommonQQ群:642555086 一.基本结构,此处可用委托,或动态代理 ...

  7. ASP.NET Core 实战:基于 Dapper 扩展你的数据访问方法

    一.前言 在非静态页面的项目开发中,必定会涉及到对于数据库的访问,最开始呢,我们使用 Ado.Net,通过编写 SQL 帮助类帮我们实现对于数据库的快速访问,后来,ORM(Object Relatio ...

  8. 开源Dapper的Lambda扩展-Sikiro.Dapper.Extension V2.0

    前言 去年我在业余时间,自己整了一套dapper的lambda表达式的封装,原本是作为了一个个人的娱乐项目,当时也只支持了Sql Server数据库.随之开源后,有不少朋友也对此做了试用,也对我这个项 ...

  9. ECommon.Dapper 轻量级的dapper扩展

    我们都知道Dapper这个orm框架,但是我们也知道他的扩展目前没有特别好的,今天我就推荐一个轻量级的很方便使用的一个扩展叫做 ECommon.Dapper,它是ECommon的一个类库,关于ECom ...

随机推荐

  1. 高性能Javascript--脚本的无阻塞加载策略

    Javascript在浏览器中的性能,可以说是前端开发者所要面对的最重要的可用性问题. 在Yahoo的Yslow23条规则当中,其中一条是将JS放在底部 .原因是,事实上,大多数浏览器使用单进程处理U ...

  2. 使用ServiceStack构建Web服务

    提到构建WebService服务,大家肯定第一个想到的是使用WCF,因为简单快捷嘛.首先要说明的是,本人对WCF不太了解,但是想快速建立一个WebService,于是看到了MSDN上的这一篇文章 Bu ...

  3. Laravel Composer and ServiceProvider

    Composer and: 创建自定义类库时,按命名空间把文件夹结构组织好 composer.json>autoload>classmap>psr-4 composer dump-a ...

  4. Android Ormlite 学习笔记2 -- 主外键关系

    以上一篇为例子,进行主外键的查询 定义Users.java 和 Role.java Users -- Role 关系为:1对1 即父表关系 Role -- Users 关系为:1对多 即子表关系 下面 ...

  5. [C#] C# 知识回顾 - 委托 delegate

    C# 知识回顾 - 委托 delegate [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6031892.html 目录 What's 委托 委托的属性 ...

  6. 为IEnumerable<T>添加RemoveAll<IEnumerable<T>>扩展方法--高性能篇

    最近写代码,遇到一个问题,微软基于List<T>自带的方法是public bool Remove(T item);,可是有时候我们可能会用到诸如RemoveAll<IEnumerab ...

  7. Kooboo CMS技术文档之一:Kooboo CMS技术背景

    语言平台 依赖注入方案 存储模型 1. 语言平台 Kooboo CMS基于.NET Framework 4.x,.NET Framework 4.x的一些技术特性成为站点开发人员使用Kooboo CM ...

  8. [原]Paste.deploy 与 WSGI, keystone 小记

    Paste.deploy 与 WSGI, keystone 小记 名词解释: Paste.deploy 是一个WSGI工具包,用于更方便的管理WSGI应用, 可以通过配置文件,将WSGI应用加载起来. ...

  9. .NET应用和AEAI CAS集成详解

    1 概述 数通畅联某综合SOA集成项目的统一身份认证工作,需要第三方系统配合进行单点登录的配置改造,在项目中有需要进行单点登录配置的.NET应用系统,本文专门记录.NET应用和AEAI CAS的集成过 ...

  10. EC笔记:第4部分:20、传递引用代替传值

    考虑以下场景: #include <iostream> #include <string> using namespace std; struct Person { strin ...