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. libevent之eventop

    在之前博文libevent之Reactor模式中,我们知道Reactor模式中一个重要的组件就是事件多路分发机制(event demultiplexer).而在libevent中,对事件多路分发机制的 ...

  2. 在多台PC上进行ROS通讯-学习笔记

    首先,致谢易科(ExBot)和ROSWiki中文社区. 重要参考文献: Running ROS across multiple machines http://wiki.ros.org/ROS/Tut ...

  3. imx51-linux的cpuinfo之分析

    这两天客户提出来,我们的平板cat /proc/cpuinfo出来的信息中的serial怎么是0. 客户就是上帝啊,没办法,分析找问题贝. 我们先看一下目前的cat /proc/cpuinfo的信息: ...

  4. Gradle 1.12用户指南翻译——第二十九章. Checkstyle 插件

    其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...

  5. 安卓笔记-可以滚动的TextView

    本来是想做一个显示文字信息的,当文字很多时View的高度不能超过一个固定的值,当文字很少时View的高度小于那个固定值时,按View的高度显示.因为ScrollView没有maxHeight,无法满足 ...

  6. 超高速前端开发工具——Emmet

    [由于 CSDN 不支持富文本编辑器写的文章迁移到 Markdown 编辑器中修改,已重发了一个重新排版的版本, 新版链接:http://blog.csdn.net/ys743276112/artic ...

  7. 用shell脚本挂载linux主机拷贝相应文件copy.sh

    #!/bin/sh # $1 MOUNTDIR $2 TARGETDIR $3 ERRORLOG #参数检查 if test $# -ne 3 then echo "argument che ...

  8. git对远程分支和tag的操作

    技术 Git查看.删除.重命名远程分支和tag 11/17/2012zrong7条评论69,235 次查看 本站文章除注明转载外,均为本站原创或者翻译. 本站文章欢迎各种形式的转载,但请18岁以上的转 ...

  9. Git学习备忘

    本文参考廖雪峰写的精彩的git学习文档,大家可以直接去官网看原版,我这里只是便于自己记录梳理 原版地址:http://www.liaoxuefeng.com/wiki/0013739516305929 ...

  10. Spring Boot 多模块与 Maven 私有仓库

    前言 系统复杂了,抽离单一职责的模块几乎是必须的:若需维护多个项目,抽离公用包上传私有仓库管理也几乎是必须的.其优点无需赘述,以下将记录操作过程. 1. 多模块拆分 在.NET 中由于其统一性,实现上 ...