Dapper框架

1.项目引用Dapper的Nuget程序包;

2.配置链接类

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Dapper
{
public class DapperConn
{
public static IDbConnection GetConnection()
{
string connStr = ConfigurationManager.AppSettings["conn"];
return new SqlConnection(connStr);
}
}
}

3.配置相应表的实体对象

目前是一个用户表和一个用户登录日志表为例:

用户表

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Dapper
{
public class UserModel
{
public Int32 Id { get; set; } public String Key { get; set; } public String Value { get; set; } }
}

用户登录日志表

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Dapper
{
public class UserLoginLog
{
public Int32 Id { get; set; } public Int32 UserId { get; set; } public DateTime CreateTime { get; set; } }
}

4.通过实体对数据库操作

(包含基本的:增删改查及事务提交操作)

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Dapper
{
public class DB
{ public int Add(UserModel model)
{
using (var conn = DapperConn.GetConnection())
{
string sql = "Insert into User (Key,Value) Value (@Key,@Value)";
return conn.Execute(sql, model);
}
} public int Add1(UserModel model)
{
using (var conn = DapperConn.GetConnection())
{
DynamicParameters dp = new DynamicParameters();
dp.Add("@Key", model.Key);
dp.Add("@Value", model.Value);
return conn.Execute("User", dp, null, null, CommandType.TableDirect);
}
} public int Update(UserModel model)
{
using (var conn = DapperConn.GetConnection())
{
string sql = "update User set Key=@Key,Value=@Value where Id=@Id";
return conn.Execute(sql, model);
}
}
public int Del(UserModel model)
{
using (var conn = DapperConn.GetConnection())
{
string sql = "Delete from User where Id=@Id";
return conn.Execute(sql, model);
}
} public UserModel GetModel()
{
using (var conn = DapperConn.GetConnection())
{
var sql = "Select Id,Key,Value from User";
return conn.QueryFirstOrDefault<UserModel>(sql);
}
} public IEnumerable<UserModel> GetModels()
{
using (var conn = DapperConn.GetConnection())
{
var sql = "Select Id,Key,Value from User";
return conn.Query<UserModel>(sql);
}
} public void ImplementAffair(UserModel userModel, UserLoginLog userLogModel)
{
using (var conn = DapperConn.GetConnection())
{
IDbTransaction tran = conn.BeginTransaction();
try
{
string query = "Update User set Key='测试' where ID=@ID";//更新一条记录
conn.Execute(query, userModel, tran, null, null); query = "insert into UserLoginLog (userId,CreateTime) value (@userId,@CreateTime)";//删除一条记录
conn.Execute(query, userLogModel, tran, null, null); //提交
tran.Commit();
}
catch (Exception ex)
{
//提交错误
//回滚事务
tran.Rollback();
}
}
} /// <summary>
/// 执行无参数存储过程 返回列表
/// </summary>
/// <returns></returns>
private IEnumerable<UserModel> ExecuteStoredProcedureNoParms()
{
using (IDbConnection con = DapperConn.GetConnection())
{
var userList = new List<UserModel>();
userList = con.Query<UserModel>("QueryRoleNoParms",
null,
null,
true,
null,
CommandType.StoredProcedure).ToList();
return userList;
}
} /// <summary>
/// 执行无参数存储过程 返回int
/// </summary>
/// <returns></returns>
private int ExecutePROC()
{
using (IDbConnection con = DapperConn.GetConnection())
{
return con.Execute("QueryRoleWithParms", null, null, null, CommandType.StoredProcedure);
}
} /// <summary>
/// 执行带参数的存储过程
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
private string ExecutePROC(UserModel model)
{
DynamicParameters dp = new DynamicParameters();
dp.Add("@ID", "");
dp.Add("@msg", "", DbType.String, ParameterDirection.Output);
using (IDbConnection con = DapperConn.GetConnection())
{
con.Execute("Proc", dp, null, null, CommandType.StoredProcedure);
string roleName = dp.Get<string>("@msg");
return roleName;
}
}
}
}

.NET之Dapper框架运用的更多相关文章

  1. EF框架 与 Dapper框架 调用分页存储过程

    1. SqlServer创建存储过程: --创建存储过程 create proc sp_Show ( @index int, --当前页 @size int, --每页大小 @totalcount i ...

  2. asp.net mvc + dapper(ORM框架) + easyui框架简洁的信息管理项目

    1.目录结构: 2.效果图: 3.IndexController控制器: using System; using System.Collections; using System.Collection ...

  3. 我的基于asp.net mvc5 +mysql+dapper+easyui 的Web开发框架(1)数据库访问(0)

    一.数据库访问 概述 1. 数据库使用mysql,orm采用dapper框架.dapper框架应用简单,只是需要自己手写sql语句,但是对于像我这样写了多年sql语句的人来说,这应该不算问题,个人还是 ...

  4. ORM之Dapper运用

    一.前言 上一篇[分层架构设计]我们已经有了架构的轮廓,现在我们就在这个轮廓里面造轮子.项目要想开始,肯定先得确定ORM框架,目前市面上的ORM框架有很多,对于.net人员来说很容易就想到以ADO.N ...

  5. Dapper的封装、二次封装、官方扩展包封装,以及ADO.NET原生封装

    前几天偶然看到了dapper,由于以前没有用过,只用过ef core,稍微看了一下,然后写了一些简单的可复用的封装. Dapper的用法比较接近ADO.NET所以性能也是比较快.所以我们先来看看使用A ...

  6. 微软.NET年芳15:我在Azure上搭建Photon服务器(C#.NET)

    网上火热的“微软.NET年芳15”文章,我也得写点什么嘛,毕竟我还是现任的微软MVP. 摘录网上的“.NET 15周年”信息如下: 微软的 .NET 框架本周迎来了 15 岁生日..NET 的第一个版 ...

  7. 关于web程序快速开发个人见解以及经历

    由于在之前公司业务的发展,需要在基于核心业务的基础上开发其他较为独立的业务系统,所以就有了这个基于Dapper,DDD概念的基础框架,由于个人基于这个框架已经经历过两个系统的开发,也因为其他项目团队需 ...

  8. web程序快速开发

    关于web程序快速开发个人见解以及经历 由于在之前公司业务的发展,需要在基于核心业务的基础上开发其他较为独立的业务系统,所以就有了这个基于Dapper,DDD概念的基础框架,由于个人基于这个框架已经经 ...

  9. (1)dotnet开源电商系统-brnshop&brnMall 和老外开发的nopCommerce(dotnet两套电商来PK--第一篇)

    一直想做电商软件,但是实在不想学PHP了,所以前后关注了这两个开源电商系统.一个是国人出品的,一个据说是俄罗斯人写得(不知道对不对).目前两个开源软件都在学习了解中,以下的博文可能会涉及到这两套系统, ...

随机推荐

  1. 深入解析Linux中的fork函数

    1.定义 #include <unistd.h> #include<sys/types.h> pid_t fork( void ); pid_t 是一个宏定义,其实质是int, ...

  2. Linux0.11进程切换和TSS结构

    TSS 全称为task state segment,是指在操作系统进程管理的过程中,进程切换时的任务现场信息.       X86体系从硬件上支持任务间的切换.为此目的,它增设了一个新段:任务状态段( ...

  3. 如何让你的传输更安全——NIO模式和BIO模式实现SSL协议通信

    对于SSL/TLS协议,如果要每个开发者都自己去实现显然会带来不必要的麻烦,正是为了解决这个问题Java为广大开发者提供了Java安全套接字扩展--JSSE,它包含了实现Internet安全通信的一系 ...

  4. 在VS2012中实现Ext JS的智能提示太简单了

    Visual Studio 2012太强大了,居然能自己会去提取Ext JS的类的属性和方法,从而实现只能提示.下面就来介绍一下实现这个功能. 在Visual Studio 2012中随便创建一个We ...

  5. OpenCV中OpenMP的使用

    vs2010中调用openMP,并添加头文件#include<omp.h> 代码来源: 作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ #inclu ...

  6. Mybatis中文查询没有结果

    我用中文参数去查找数据,没有返回结果,应该是乱码问题 进行如下配置问题消失:jdbc:mysql://localhost:3306/appstore_db?useUnicode=true&ch ...

  7. RHEL6非交互式工具sshpass和expect安装

    RHEL6非交互式工具sshpass和expect安装 1 sshpass 在rhel6.4上,没有sshpass的软件包,无法采用yum方式安装.从源码编译安装非常简单. 1) 下载sshpass源 ...

  8. 【编程练习】kmp算法代码

    代码来自: http://blog.csdn.net/v_JULY_v #include "StdAfx.h" #include <iostream> using na ...

  9. SharePoint WebPart 简单的读取列表内容的web部件

    最近,自己也在学习写一些SharePoint的部件,也就是使用对象模型,下面,介绍一下自己刚刚写的小测试程序,不足之处,还请指正. 1.  新建项目 Vs2008 – 新建 – 项目 – 类库 – 输 ...

  10. Mina源码阅读笔记(二)- IoBuffer的封装

    在阅读IoBuffer源码之前,我们先看Mina对IoBuffer的描述:A byte buffer used by MINA applications. This is a replacement ...