分享一个dapper简单封装

using System;
using System.Data.Common;
using System.Linq;
using Dapper;
using MySql.Data.MySqlClient;

  public class DapperBase<T> where T:class,new()
    {

        /// <summary>
        /// 读连接
        /// </summary>
        /// <returns></returns>
        public DbConnection GetWriteConnection()
        {
            MySqlConnection connection = new MySqlConnection(WebconfigUtils.GetWriteDbconfig());
            //NpgsqlConnection connection = new NpgsqlConnection(_sqlconnection);
            connection.Open();
            return connection;
        }

        /// <summary>
        /// 读连接
        /// </summary>
        /// <returns></returns>
        public DbConnection GetReadConnection()
        {
            try
            {
                MySqlConnection connection = new MySqlConnection(WebconfigUtils.GetReadDbconfig());
                connection.Open();
                return connection;
            }
            catch (Exception)
            {
                return GetWriteConnection();
            }
        }

        public T ExecuteSql(string sql, object obj)
        {
            using (var connection = GetReadConnection())
            {
                var model =
                    connection.Query<T>(sql, obj)
                        .FirstOrDefault();
                connection.Close();
                return model;
            }
        }

        /// <summary>
        /// 事务执行sql
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="obj"></param>
        /// <returns></returns>
        public int ExecuteTransactionSql(string sql, object obj)
        {
            using (var connection = GetWriteConnection())
            {
                var trans = connection.BeginTransaction();
                var rows =connection.Execute(sql, obj,trans);
                if (rows > 0)
                {
                    trans.Commit();
                }
                else
                {
                    trans.Rollback();
                }
                connection.Close();
                return rows;
            }
        }

    }
时间: 2024-08-26 10:59:26

分享一个dapper简单封装的相关文章

给大家分享一个比较简单的效果,点击表格每一行变色的几种方法。。。

代码一: function choose(type,color){ var lastindex=-1; var thistype=document.getElementsByTagName(type); for(var i=0;i<thistype.length;i++){ thistype[i].setAttribute("myindex",i); } for(var i=0;i<thistype.length;i++){ thistype[i].onclick=func

分享一个近期写的简单版的网页采集器

分享一个近期写的简单版的网页采集器 功能特点: 1.可通过配置,保存采集规则. 2.可通过采集规则,进行数据采集. 3.可分页,分关键字,进行采集. 4.可保存数据至数据库,文本中. ........... 功能还比较简单,喜欢深入的可以继续深入下去,暂时还没有登录的功能,因为登录功能涉及到的范围比较广,待日后慢慢研究后再开发. 我先上个图让大家一睹为快吧: 首先看看页面,我们要采集这个网站的文章 接下来,首先是查找分页,获得分页里面的文章链接,接着查找内容页需要采集的字段,生成规则,进行采集.

分享一个简单的简单的SQLHelper类

分享一个简单的简单的SQLHelper类,代码如下: 1 class SqlHelper 2 { 3 public static readonly string connstr = 4 ConfigurationManager.ConnectionStrings["dbConnStr"].ConnectionString; 5 6 public static int ExecuteNonQuery(string cmdText, 7 params SqlParameter[] para

分享一个自控小技巧--小任务--简单却十分的有效

场景,话不多说 记不记得自己想做某件事情,比如每天锻炼,但是时常难以开始? 记不记得自己本来计划好的某段时间用来做某件事情,但是一不小心就沉浸于游戏或者电视剧忘了自拔? 记不记得自己计划好的每天晚上花一小时学习某项技能,但是坚持了三天就抛到脑后难以记起了? 我来分享一个关于自控的小技巧,对别人有没有效果我不知道,反正对多年来想要自控多一些的我反正发生了奇效! 技巧就是设定小任务 这个技巧十分的简单,易于执行.就是 设定几个特变简单的.但是每天都要做的小任务. 比如,如果你想要背单词:可以试试设定

分享一个简单易用的软件定时器模块——基于keil+stm32f103zet+hal库(裸机实现)

公众号上看到一个比较好的一个github项目:https://github.com/0x1abin/MultiTimer 今天看了看,简单的,就移植了- 且看文档的说明, ================================= 分享一个简单易用的软件定时器模块——MultiTimer.源码地址: https://github.com/0x1abin/MultiTimer 简介 MultiTimer 是一个软件定时器扩展模块,可无限扩展你所需的定时器任务,取代传统的标志位判断方式, 更

用XHR简单封装一个axios

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="X-UA-Compatible"

Android 分享一个简单有趣的动画效果

本期开始于大家分享几个简单又有趣的动画 效果图: 效果还是不错的,而实现起来也并没有多大的难度,上代码喽 public int id[] = { R.drawable.fengjing_1, R.drawable.fengjing_2, R.drawable.fengjing_3, R.drawable.fengjing_4, R.drawable.fengjing_5, R.drawable.fengjing_6 }; public String list[] = { "一", &q

[Android]OkHttp的简单封装-辅助框架

序言 OkHttp 的强大算是毋庸置疑了:OkHttp 基本在网络层能完成任何事情,适用任何情况:正因为如此 OkHttp 每次构建一个请求的时候不得不写大量的代码来完成相应的配置.在这里分享一个极限封装OkHttp的辅助框架,通过该框架能最大程度简化你的开发负担.好话不多说,往下看看就知道好不好. 原生 在这里举例几个原生情况下使用 okhttp 的情况. GET public void get() { Request.Builder builder = new Request.Builder

分享一个强大的采集类,还可以模拟php多进程

做采集的时候,可以使用file_get_contents()去获取网页源代码,但是使用file_get_contents采集,速度慢,而且超时时间,不好控制.如果采集的页面不存在,需要等待的时间很长.一般来说,curl的速度最快,其次是socket,最后是file_get_contents.现在跟大家分享一个很强大的采集类,会根据你的服务器当前的配置,自动选择最快的方式.已经封装了curl和socket,file_get_contents 用法很简单:1,采用get方法请求Http::doGet