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的更多相关文章

  1. .net core Dapper for MySql

    Dapper 语法比较简单,效率也比较快,速度接近IDataReader 甚至读取数据超过了DataTable,建议在实际项目可以结合EntityFramework Core 一起使用. 一.创建My ...

  2. Dapper 的输出参数使用示范

    -- 普通SQL 示范-- Queries with output parameters. Hide Shrink Copy Code // output parameters // the para ...

  3. 让C#开发更简单,抽象增删改

    相信经常做一些MS,CRM 项目的童鞋非常有体会,大部分时间都是在复制和粘贴,大部分项目框架都是建一个三层,首先是DAL建一些增删改查,然后呢是BLL业务层再建一些增删改查,然后UI层再调用增删改查, ...

  4. 自己整理了一个 Dapper的Helper助手类

    链接字符串配置: <connectionStrings> <add name="db" connectionString="server=.;datab ...

  5. Dapper,大规模分布式系统的跟踪系统--转

    原文地址:http://bigbully.github.io/Dapper-translation/ 概述 当代的互联网的服务,通常都是用复杂的.大规模分布式集群来实现的.互联网应用构建在不同的软件模 ...

  6. ORM之轻量级框架--Dapper

    一.什么是Dapper? Dapper是一款轻量级Orm框架,它是属于半自动的,它和Entity Framework和NHibernate不同,它只有一个单文件,没有很复杂的配置,如果你喜欢原生Sql ...

  7. Dapper,大规模分布式系统的跟踪系统

    概述 当代的互联网的服务,通常都是用复杂的.大规模分布式集群来实现的.互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发.可能使用不同的编程语言来实现.有可能布在了几千台服务器 ...

  8. NetCore+Dapper WebApi架构搭建(一):基本框架

    初衷是想用dapper搭建一个高性能的架构,因为dapper操作数据库的效率很高 1.VS创建一个NetCore WebApi的框架,然后解决方案添加一个NetStandard的类库 整个解决方案如图 ...

  9. 【原创】打造基于Dapper的数据访问层

    [原创]打造基于Dapper的数据访问层   前言 闲来无事,花几天功夫将之前项目里用到的一个数据访问层整理了出来.实现单个实体的增删改查,可执行存储过程,可输出返回参数,查询结果集可根据实际情况返回 ...

随机推荐

  1. Apollo-3.0本地编译

    Apollo-3.0本地编译 用docker编译所用的dev.x86_64.dockerfile文件(具体位置在apollo/docker/build)中有所有的依赖库或包, 还会执行一些shell脚 ...

  2. xtrabackup

    mysqldump备份方式是采用逻辑备份,其最大的缺陷就是备份和恢复速度都慢,对于一个小于50G的数据库而言,这个速度还是能接受的,但如果数据库非常大,那再使用mysqldump备份就不太适合了.而使 ...

  3. 13)django-ORM(连表一对多,外键创建,创建数据,3种查询)

    一对多需要使用外键 一:外键创建ForeignKey b=models.ForeignKey(to="Business",to_field=("id"))#dj ...

  4. 在v-html中,js 正则表达式清除字符串里的style属性

    项目中遇到这样的需求,后端返回的是字符串,在vue用v-html显示,里面有style样式,要去除style 在v-html中使用filters,和平时的不一样,推荐项目的方法,定义一个全局的过滤方法 ...

  5. 原来商家登录系统的commonjs

    /* *适配 */ //orientationchange方向改变事件 (function (doc,win) { var docEl = doc.documentElement,//根元素html ...

  6. XmlDocument.Load(url) 本地和http远程

    XmlDocument.Load(url) 的使用 远程: string path = @"http://localhost:8080/Source/XMLConfig.xml"; ...

  7. checkbox 选中的id拼接长字符串

    需求描述:为了做一个批量操作,需要获取到checkbox选中的项的id,并且把选中的id拼接成字符串. 解决思路:先获取到checkbox选中项,然后拼接.(这tm不废话么),问题的关键就是获取che ...

  8. Java 并发类

    java.util.concurrent包里 提供了一批线程安全的类 一. java.util.concurrent.atomic java.util.concurrent.atomic包里的原子处理 ...

  9. bzoj 2150

    然后考虑正解 我们发现,最坏情况就是每个点都派驻军队,所以答案至多是“.”的数目 而且,每个点都至多只有一个入度和一个出度,所以我们可以将每个点拆成两个点,一个作为入点,一个作为出点,然后所有图上能到 ...

  10. Java基础之多线程框架

    一.进程与线程的区别 1.定义: 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比 ...