一小段 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), 因为官方提供的例子简单易懂, 所以没有必要额外考虑新的例子. 关于安装的教程, 可 ...
随机推荐
- LOAD_DLL_DEBUG_EVENT 时读取 DllName
这句话是说 lpImageName 和 hFile 存在关联(associated),不是一定指向! 继续读后面那句,“这个数字可能为NULL,或者包含着被调试进程空间中的一个字符串地址.这个地址,相 ...
- GO 数组
一.数组(Array) 1.1 什么是数组 Go 语言提供了数组类型的数据结构. 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形.字符串或者自定义类型. ...
- Four Ways to Read Configuration Setting in C#(COPY)
Introduction This article will demonstrate us how we can get/read the configuration setting from Web ...
- Python 最强 IDE 详细使用指南!-PyCharm
PyCharm 是一种 Python IDE,可以帮助程序员节约时间,提高生产效率.那么具体如何使用呢?本文从 PyCharm 安装到插件.外部工具.专业版功能等进行了一一介绍,希望能够帮助到大家. ...
- Python中最常见的10个问题(list)
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 大熊 PS:如有需要Python学习资料的小伙伴可以加点击下方链接 ...
- Java之线程与进程
一.线程与进程 线程:一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务.多线程是多任务的一种特别形式,但多线程使用了更小的资源开销. 进程:一个进程包括 ...
- css布局技巧
CSS用户界面样式 鼠标样式currsor li{ cursor:pointer: } 设置或检索在对象上移动鼠标指针采用何种系统预定义的光标形状 属性值 描述 default 默认 pointer ...
- C# vs2017创建Com组件,并注册
1.创建一个普通类库dll项目,如:MyCom. 2.导出接口,添加Guid,Guid为全局唯一标识,可以用VS2017自带工具获取.获取Guid的方法,如图: (1)打开自带Guid工具. (2)首 ...
- Java 方法引用_特性
JAVA8 方法引用:(四种方法引用的使用) 对象引用的特点:不同的对象可以操作同一块的内容:而方法引用就是指为一个方法设置别名,相当于一个方法定义了不同的名字. 引用静态方法: 类名称 :: sta ...
- [Go] 写文件和判断文件是否存在
OpenFile得到一个File,然后调用它的Write,参数是字节切片Stat看看返回错误没有 package main import ( "fmt" "os" ...