一小段 Dapper 的简单示例
关于 Dapper 的介绍,请参考:Dapper - 一款轻量级对象关系映射(ORM)组件,DotNet 下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using Dapper; namespace SqlMapperDemo.ConApp
{
public interface IUser
{
string Key { get; set; }
string Name { get; set; }
} public class UserInfo : IUser
{
public string Key { get; set; }
public string Name { get; set; }
} public class DbContext
{
private static readonly string ConnectionString = ConfigurationManager.ConnectionStrings["DatabaseConnection"].ConnectionString; public static IDbConnection GetConnection()
{
var connection = new SqlConnection(ConnectionString);
connection.Open();
return connection;
} public static int GetAccountCount(string key)
{
using (var db = GetConnection())
{
return db.Query<int>("select count(*) from Account where UserKey = @key", new { key }).FirstOrDefault();
}
} public static void Add(IUser user)
{
using (var db = GetConnection())
{
db.Execute("if not exists(select 1 from Account where UserKey = @key) " +
"insert into Account(UserKey, UserName) values (@key, @name);" +
"else " +
"update Account set UserName = @name, deleted = null where UserKey = @key;",
new
{
name = user.Name,
key = user.Key
});
}
} public static void Remove(string key)
{
using (var db = GetConnection())
{
db.Execute("delete Account where UserKey = @key",
new
{
key
});
}
} public static IList<IUser> GetList()
{
using (var db = GetConnection())
{
return db.Query<UserInfo>("select UserKey as [Key], UserName as Name from Account " +
"where 1=1").ToList().Cast<IUser>().ToList();
}
}
} class Program
{
static void Main(string[] args)
{
string userKey = Guid.NewGuid().ToString(); // demo-01 - 得到
Console.WriteLine("accountCount:" + DbContext.GetAccountCount(userKey)); // 0 // demo-02 - 新增
DbContext.Add(new UserInfo() { Key = userKey, Name = "小张" }); // demo-03 - 再次得到
Console.WriteLine("accountCount:" + DbContext.GetAccountCount(userKey)); // 1 // demo-04 - 得到所有记录
foreach (IUser userItem in DbContext.GetList())
{
Console.WriteLine("userKey: " + userItem.Key + ", userName: " + userItem.Name);
//userKey: f0cbf560-9c41-41a7-9ccf-31026adbfa91, userName: 小张
} // demo-05 - 删除
DbContext.Remove(userKey); // demo-06 - 删除后,得到
Console.WriteLine("accountCount:" + DbContext.GetAccountCount(userKey)); //
} }
}
谢谢浏览!
一小段 Dapper 的简单示例的更多相关文章
- 微型orm框架--dapper的简单使用
1.安装 首先使用nuget安装dapper,因为这里的示例是使用mysql,所以还要安装mysql的驱动.如下图: 2 数据库表 脚本 ; -- -------------------------- ...
- pureMVC简单示例及其原理讲解四(Controller层)
本节将讲述pureMVC示例中的Controller层. Controller层有以下文件组成: AddUserCommand.as DeleteUserCommand.as ModelPrepCom ...
- SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论 SignalR 简单示例 通过三个DEMO学会SignalR的三种实现方式 SignalR推送框架两个项目永久连接通讯使用 SignalR 集线器简单实例2 用SignalR创建实时永久长连接异步网络应用程序
SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论 异常汇总:http://www ...
- java读取ACCESS数据库的简单示例
java读取ACCESS数据库的简单示例 虽然简单,对初学者来说,如果没有一段可以成功执行的代码供参考,还真难调试 先用ACCESS建一个数据库 DB1.MDB,里面有一表"table1&q ...
- C#调用Python脚本的简单示例
C#调用Python脚本的简单示例 分类:Python (2311) (0) 举报 收藏 IronPython是一种在 .NET及 Mono上的 Python实现,由微软的 Jim Huguni ...
- Cookie是存储在客户端上的一小段数据
背景 在HTTP协议的定义中,采用了一种机制来记录客户端和服务器端交互的信息,这种机制被称为cookie,cookie规范定义了服务器和客户端交互信息的格式.生存期.使用范围.安全性. 在JavaSc ...
- 并行编程OpenMP基础及简单示例
OpenMP基本概念 OpenMP是一种用于共享内存并行系统的多线程程序设计方案,支持的编程语言包括C.C++和Fortran.OpenMP提供了对并行算法的高层抽象描述,特别适合在多核CPU机器上的 ...
- WebGL简易教程(一):第一个简单示例
目录 1. 概述 2. 示例:绘制一个点 1) HelloPoint1.html 2) HelloPoint1.js (1) 准备工作 (2) 着色器 (3) 顶点着色器 (4) 片元着色器 (5) ...
- thrift简单示例 (go语言)
这个thrift的简单示例来自于官网 (http://thrift.apache.org/tutorial/go), 因为官方提供的例子简单易懂, 所以没有必要额外考虑新的例子. 关于安装的教程, 可 ...
随机推荐
- laravel使用Dingo\Api通过response()->json()返回空对象
laravel使用Dingo\Api写接口跟android对接时,android一直反应解析错误,无法解析数据. { "status_code":200, "messag ...
- java基础(21):异常
1. 异常 什么是异常?Java代码在运行时期发生的问题就是异常. 在Java中,把异常信息封装成了一个类.当出现了问题时,就会创建异常类对象并抛出异常相关的信息(如异常出现的位置.原因等). 1.1 ...
- 码云 git 常用命令
git 常用命令: git init 创建一个本地文件 ①git add . 当前文件夹下的所有内容 添加到暂存区 git add test.txt 指定文件夹添加 可以添压缩文件 ②git comm ...
- [日常] gitlab创建用户并把用户加入项目
在gitlab里创建用户 默认密码是要求创建的用户自己去邮箱重置,也可以创建完成后直接点击编辑,就可以更改密码了 创建完用户,用户登录的时候需要去重置密码 创建完项目,就可以去使用了 也可以为这个项目 ...
- postman---postman增加断言
我们在做测试的时候都会有一个验证点,我们通常把这个验证点叫做断言,断言通过了就会说明我们的这个用例是通过的,当然这么强大的postman也是有断言的,我们一起学习下如何通过postman增加断言. 断 ...
- appium---元素定位方法
在我们做自动化测试的过程中,最基本的就是要会元素定位,也是自动化中的灵魂所在,如果一个自动化测试工程师说不会定位元素定位,那么肯定也不会做自动化了. 如何查看元素 小伙伴们都知道如果是web端可以通过 ...
- 22.Java基础_StringBuilder类
String类对象的拼接操作:执行到s+="world"语句时,常量池会先创建"world"对象,再去创建"helloworld"对象,最后 ...
- LeetCode 动态规划
动态规划:适用于子问题不是独立的情况,也就是各子问题包含子子问题,若用分治算法,则会做很多不必要的工作,重复的求解子问题,动态规划对每个子子问题,只求解一次将其结果保存在一张表中,从而避免重复计算. ...
- Jenkins根据svn版本号进行构建
在svn版本url后面加上“@svn版本号”,如@2105 原文:https://blog.csdn.net/jlminghui/article/details/40426849
- Jenkins配置:添加用户和管理权限
Jenkins配置:添加用户和管理权限 参考文章:http://www.cnblogs.com/zz0412/p/jenkins_jj_14.html 今天给大家说说使用Jenkins专有用户数据库的 ...