关于 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 的简单示例的更多相关文章

  1. 微型orm框架--dapper的简单使用

    1.安装 首先使用nuget安装dapper,因为这里的示例是使用mysql,所以还要安装mysql的驱动.如下图: 2 数据库表 脚本 ; -- -------------------------- ...

  2. pureMVC简单示例及其原理讲解四(Controller层)

    本节将讲述pureMVC示例中的Controller层. Controller层有以下文件组成: AddUserCommand.as DeleteUserCommand.as ModelPrepCom ...

  3. 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 ...

  4. java读取ACCESS数据库的简单示例

    java读取ACCESS数据库的简单示例 虽然简单,对初学者来说,如果没有一段可以成功执行的代码供参考,还真难调试 先用ACCESS建一个数据库 DB1.MDB,里面有一表"table1&q ...

  5. C#调用Python脚本的简单示例

    C#调用Python脚本的简单示例 分类:Python (2311)  (0)  举报  收藏 IronPython是一种在 .NET及 Mono上的 Python实现,由微软的 Jim Huguni ...

  6. Cookie是存储在客户端上的一小段数据

    背景 在HTTP协议的定义中,采用了一种机制来记录客户端和服务器端交互的信息,这种机制被称为cookie,cookie规范定义了服务器和客户端交互信息的格式.生存期.使用范围.安全性. 在JavaSc ...

  7. 并行编程OpenMP基础及简单示例

    OpenMP基本概念 OpenMP是一种用于共享内存并行系统的多线程程序设计方案,支持的编程语言包括C.C++和Fortran.OpenMP提供了对并行算法的高层抽象描述,特别适合在多核CPU机器上的 ...

  8. WebGL简易教程(一):第一个简单示例

    目录 1. 概述 2. 示例:绘制一个点 1) HelloPoint1.html 2) HelloPoint1.js (1) 准备工作 (2) 着色器 (3) 顶点着色器 (4) 片元着色器 (5) ...

  9. thrift简单示例 (go语言)

    这个thrift的简单示例来自于官网 (http://thrift.apache.org/tutorial/go), 因为官方提供的例子简单易懂, 所以没有必要额外考虑新的例子. 关于安装的教程, 可 ...

随机推荐

  1. 【linux】linux 查看物理CPU个数、核数、逻辑CPU个数

    ①物理cpu数:主板上实际插入的cpu数量,可以数不重复的 physical id 有几个(physical id) cat /proc/cpuinfo| grep "physical id ...

  2. 关于python的十一道练习

    关于python的十一道练习 1.编写程序,输入一个自然数字符串,然后输出各位数字之和.例如,输入字符串1234,输出10. def sums1(): #第一题 strs=input('请输入一个自然 ...

  3. JS基础语法---函数练习part3---4个练习

    练习1:求一个数字的阶乘 function getJieCheng(num) { var result = 1; for (var i = 1; i <= num; i++) { result ...

  4. Hystrix工作流

    Hystrix工作流程图: 流程图详解 1. 构造HystrixCommand对象或者HystrixObservableCommand对象 构造HystrixCommand 或HystrixObser ...

  5. redis做持久化的两种方式,RDB、AOF讲解

    redis的两种持久化方式: 1.RDB方式 概念:在指定的时间间隔内保存数据快照 实现方式: 找到redis的安装目录,修改redis的配置文件(redis.conf):① 修改备份的时间间隔:sa ...

  6. Vuex简介

    一. 什么是Vuex?   Vuex Vuex是一个专门为Vue.js应用程序开发的状态管理模式, 它采用集中式存储管理所有组件的公共状态, 并以相应的规则保证状态以一种可预测的方式发生变化. Vue ...

  7. Html学习之十九(表格与表单学习--邮箱注册页面设计)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. day3_7.1

    1.python的注释 python中为了使代码更容易被人看懂,提高团队开发效率,可使用注释.代码中的注释不加入编译中. 注释有单行注释,如 #这是一段注释 和多行注释: ''' 这是一行注释 ''' ...

  9. 2019.6.13_SQL语句中----删除表数据drop、truncate和delete的用法

    一.SQL中的语法 1.drop table 表名称                         eg: drop table  dbo.Sys_Test   2.truncate table 表 ...

  10. C++ 模板特化、偏特化测试程序

    #include <iostream> // 偏特化的模板不会自己添加构造函数 ctor 和 析构函数 dtor #if 1 // P1 template <typename T1, ...