Dapper Helper
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Threading.Tasks;
using Dapper;
using Dapper.Contrib.Extensions; namespace Com.BPM.Forms
{
/// <summary>
/// Dapper Helper
/// create by ben.jiang 2017/5/21
/// </summary>
public partial class DapperDataAsync
{
/// <summary>
/// DB Connetction String
/// </summary>
private static string connectionString = ConfigurationManager.ConnectionStrings["Movitech"].ToString();
/// <summary>
/// Get Entity (int key)
/// </summary>
public static async Task<T> GetAsync<T>(int id, IDbTransaction transaction = null, int? commandTimeout = null) where T : class, new()
{
try
{
using (var conn = new SqlConnection(connectionString))
{
return await conn.GetAsync<T>(id, transaction, commandTimeout);
}
}
catch (Exception ex)
{
SystemLog.WriteError(ex);
return null;
}
}
/// <summary>
/// Get Entity (long key)
/// </summary>
public static async Task<T> GetAsync<T>(long id, IDbTransaction transaction = null, int? commandTimeout = null) where T : class, new()
{
try
{
using (var conn = new SqlConnection(connectionString))
{
return await conn.GetAsync<T>(id, transaction, commandTimeout);
}
}
catch (Exception ex)
{
SystemLog.WriteError(ex);
return null;
}
}
/// <summary>
/// Get Entity (guid key)
/// </summary>
public static async Task<T> GetAsync<T>(System.Guid id, IDbTransaction transaction = null, int? commandTimeout = null) where T : class, new()
{
try
{
using (var conn = new SqlConnection(connectionString))
{
return await conn.GetAsync<T>(id, transaction, commandTimeout);
}
}
catch (Exception ex)
{
SystemLog.WriteError(ex);
return null;
}
}
/// <summary>
/// Get Entity (string key)
/// </summary>
public static async Task<T> GetAsync<T>(string id, IDbTransaction transaction = null, int? commandTimeout = null) where T : class, new()
{
try
{
using (var conn = new SqlConnection(connectionString))
{
return await conn.GetAsync<T>(id, transaction, commandTimeout);
}
}
catch (Exception ex)
{
SystemLog.WriteError(ex);
return null;
}
}
/// <summary>
/// Get All List
/// </summary>
public static async Task<IEnumerable<T>> GetAllAsync<T>() where T : class, new()
{
try
{
using (var conn = new SqlConnection(connectionString))
{
return await conn.GetAllAsync<T>();
}
}
catch (Exception ex)
{
SystemLog.WriteError(ex);
return null;
}
}
/// <summary>
/// Get List With SQL
/// </summary>
public static async Task<IEnumerable<T>> GetListAsync<T>(string sql) where T : class, new()
{
try
{
using (var conn = new SqlConnection(connectionString))
{
return await conn.QueryAsync<T>(sql, commandType: CommandType.Text);
}
}
catch (Exception ex)
{
SystemLog.WriteError(ex);
return null;
}
}
/// <summary>
/// Insert Entity
/// </summary>
public static async Task<int> InsertAsync<T>(T model, IDbTransaction transaction = null, int? commandTimeout = null) where T : class, new()
{
try
{
using (var conn = new SqlConnection(connectionString))
{
return await conn.InsertAsync<T>(model, transaction, commandTimeout);
}
}
catch (Exception ex)
{
SystemLog.WriteError(ex);
return ;
}
}
/// <summary>
/// Update Entity
/// </summary>
public static async Task<T> UpdateAsync<T>(T model, IDbTransaction transaction = null, int? commandTimeout = null) where T : class, new()
{
try
{
using (var conn = new SqlConnection(connectionString))
{
bool b = await conn.UpdateAsync<T>(model, transaction, commandTimeout);
if (b) { return model; }
else { return null; }
}
}
catch (Exception ex)
{
SystemLog.WriteError(ex);
return null;
}
}
/// <summary>
/// Delete Entity
/// </summary>
public static async Task<T> DeleteAsync<T>(T model, IDbTransaction transaction = null, int? commandTimeout = null) where T : class, new()
{
try
{
using (var conn = new SqlConnection(connectionString))
{
bool b = await conn.DeleteAsync<T>(model, transaction, commandTimeout);
if (b) { return model; }
else { return null; }
}
}
catch (Exception ex)
{
SystemLog.WriteError(ex);
return null;
}
}
/// <summary>
///Execute SQL Statement
/// </summary>
public static async Task<int> ExecSqlAsync<T>(string sql)
{
try
{
using (var conn = new SqlConnection(connectionString))
{
return await conn.ExecuteAsync(sql);
}
}
catch (Exception ex)
{
SystemLog.WriteError(ex);
return ;
}
} #region For Project
/// <summary>
/// Get Entity By ProcInstID
/// </summary>
public static async Task<T> GetByProcInstIdAsync<T>(string procInstId) where T : class, new()
{
try
{
string tbname = typeof(T).Name;
string sql = string.Format("SELECT * FROM {0} WHERE ProcInstID='{1}'", tbname, procInstId);
using (var conn = new SqlConnection(connectionString))
{
return await conn.QueryFirstOrDefaultAsync<T>(sql);
}
}
catch (Exception ex)
{
SystemLog.WriteError(ex);
return null;
}
}
#endregion
}
}
Dapper Helper的更多相关文章
- .net core Dapper for MySql
Dapper 语法比较简单,效率也比较快,速度接近IDataReader 甚至读取数据超过了DataTable,建议在实际项目可以结合EntityFramework Core 一起使用. 一.创建My ...
- Dapper 的输出参数使用示范
-- 普通SQL 示范-- Queries with output parameters. Hide Shrink Copy Code // output parameters // the para ...
- 让C#开发更简单,抽象增删改
相信经常做一些MS,CRM 项目的童鞋非常有体会,大部分时间都是在复制和粘贴,大部分项目框架都是建一个三层,首先是DAL建一些增删改查,然后呢是BLL业务层再建一些增删改查,然后UI层再调用增删改查, ...
- 自己整理了一个 Dapper的Helper助手类
链接字符串配置: <connectionStrings> <add name="db" connectionString="server=.;datab ...
- Dapper,大规模分布式系统的跟踪系统--转
原文地址:http://bigbully.github.io/Dapper-translation/ 概述 当代的互联网的服务,通常都是用复杂的.大规模分布式集群来实现的.互联网应用构建在不同的软件模 ...
- ORM之轻量级框架--Dapper
一.什么是Dapper? Dapper是一款轻量级Orm框架,它是属于半自动的,它和Entity Framework和NHibernate不同,它只有一个单文件,没有很复杂的配置,如果你喜欢原生Sql ...
- Dapper,大规模分布式系统的跟踪系统
概述 当代的互联网的服务,通常都是用复杂的.大规模分布式集群来实现的.互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发.可能使用不同的编程语言来实现.有可能布在了几千台服务器 ...
- NetCore+Dapper WebApi架构搭建(一):基本框架
初衷是想用dapper搭建一个高性能的架构,因为dapper操作数据库的效率很高 1.VS创建一个NetCore WebApi的框架,然后解决方案添加一个NetStandard的类库 整个解决方案如图 ...
- 【原创】打造基于Dapper的数据访问层
[原创]打造基于Dapper的数据访问层 前言 闲来无事,花几天功夫将之前项目里用到的一个数据访问层整理了出来.实现单个实体的增删改查,可执行存储过程,可输出返回参数,查询结果集可根据实际情况返回 ...
随机推荐
- Android应用内嵌cocos2dx游戏项目
cocos2dx的Android环境搭建(Windows/Mac) 我用的cocos2dx3.15版本的. 以下步骤是在Windows平台执行的. 创建Cocos2d-x项目 将刚才下载的cocos2 ...
- $Django 表设计,登陆图片验证
pip3 install pillow #PIL登陆图片验证(未实现局部刷新)详细:https://www.cnblogs.com/qiangyuge/p/8025168.htmldef get_co ...
- luasocket 安装记录 (FS1.6)
说明: 想通过Lua 脚本实现 http.默认 FS 的 mod_lua 中没有对socket 的支持,如下的操作为lua 添加 socket的支持. 一.下载 luasocket 包: # wget ...
- linux /proc目录
1. /proc目录Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构.改变内核设置的机制.proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文 ...
- Laravel 5.2--git冲突error: Your local changes to the following files would be overwritten by merge:
今天在服务器上git pull是出现以下错误: error: Your local changes to the following files would be overwritten by mer ...
- bootstrap Autocomplete
首先应用文件(已上传到文件,需要可自行下载) <link href="~/bower_components/select2/dist/css/select2.css" rel ...
- Arrays.asList()vs Collections.singletonList()
Collections.singletonList(something)是不可变的, 对Collections.singletonList(something)返回的列表所做的任何更改将导致Unsup ...
- IPNS节点ID
IPNS节点ID访问网站: 当我们修改网站内容重新添加到ipfs时,hash会发生变化,当我们网站更新时,我们可以将网站发布到IPNS,在IPNS中,允许我们节点的域名空间中引用一个IPFS ...
- 洛谷P3676 小清新数据结构题 [动态点分治]
传送门 思路 这思路好妙啊! 首先很多人都会想到推式子之后树链剖分+线段树,但这样不够优美,不喜欢. 脑洞大开想到这样一个式子: \[ \sum_{x} sum_x(All-sum_x) \] 其中\ ...
- 牛客网 python 求解立方根
•计算一个数字的立方根,不使用库函数 详细描述: •接口说明 原型: public static double getCubeRoot(double input) 输入:double 待求解参数 返回 ...