Dapper试用

时间:2021-04-26 11:14:40
以下代码摘自imfunny的<给力分享新的ORM => Dapper> http://www.cnblogs.com/imfunny/archive/2011/09/16/2178829.html
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using Dapper;
namespace ConsoleApplication1
{
class Program
{
public static readonly string sqlconnectionString = "Data Source=localhost;Initial Catalog=Test;User Id=admindsl;Password=a4w8c3k5;";
static void Main(string[] args)
{
SqlConnection connection = GetOpenConnection(sqlconnectionString);
//插入100000条数据到数据库
//for (int i = 0; i < 100000; i++)
//{
// connection.Execute("INSERT INTO dog (Age,Name,Weight) VALUES (@age,@name,@Weight)",
// new { @age = i, @name = Guid.NewGuid().ToString(), @Weight = i });//System.Guid.NewGuid().ToString()全球唯一标识符 (GUID) 是一个字母数字标识符,用于指示产品的唯一性安装。
//} //获取单条记录
//var edog = connection.Query<Dog>("select * from dog where id = @Id", new { Id = 2 }).Single<Dog>();
var edog = connection.Query<Dog>("select * from dog where id = @Id", new { Id = 3 }).SingleOrDefault<Dog>();
Console.WriteLine("{0} : {1}", edog.Name, edog.Id);
Console.WriteLine(); //获取前十条记录
IList<Dog> dogs = connection.Query<Dog>("select * from dog where id <= 10", null).ToList();
foreach (Dog dg in dogs)
{
Console.WriteLine("{0} : {1}", dg.Name, dg.Id);
} Console.Read();
}
public static SqlConnection GetOpenConnection(string x)
{
SqlConnection connection = new SqlConnection(x);
connection.Open();
return connection;
}
}
public class Dog
{
public int Age { get; set; } public int Id { get; set; } public string Name { get; set; } public int Weight { get; set; } public int IgnoredProperty
{
get
{
return 1;
}
} } }

Dapper保持目前的API,保持精确的定位是非常正确, 非常必须的.否则又是一个大而全的重型机器,失去它的优势.
如Connection, Transaction不由Dapper内部管理, 这个定位真是太绝了

想写linq的话使用这个扩展。地址这里http://sqlinq.codeplex.com/
SQLinq.Dapper
语法如下。

IEnumerable<Person> data = null;
using(IDbConnection con = GetDbConnection())
{
con.Open();
data = con.Query(
from p in SQLinq<Person>()
where p.FirstName.StartsWith("C") && p.Age > 21
orderby p.FirstName
select p
);
con.Close();
}

单表的映射是这样的Query<Dog>(sqlquery,parmar);
多表的是这样Query<Dog,Content,Dog>(sqlquery,(Content,Dog) => Dog.dd = Content.id,。。。。);

更加简化的事务机制

ar trans = conn.BeginTransaction();
conn.Execute(query, info);
trans.Commit();

数据库的关闭

const string query = "DELETE FROM `ex_admin` WHERE adminid = {0};";
using (var conn = Database.DbService())
{
conn.Execute(string.Format(query, adminid), null);
}

测试速度代码一

private void TestDapper()
{
StringBuilder strSql = new StringBuilder();
strSql.Append("SELECT EmployeeID,EmployeeNO,EmployeeName,DepartmentID,LoginNo,LoginPWD,IsLogin,GroupID,IsDeleted,Operator,InputDate,EditDate ");
strSql.Append("FROM Employee ");
IList<EmployeeInfo> list;
IDbConnection conn = new SqlConnection(connectionString); conn.Open();
sw.Reset();
sw.Start();
list = conn.Query<EmployeeInfo>(strSql.ToString(), null).ToList();
conn.Close();
sw.Stop(); MessageBox.Show(list.Count.ToString());
} private void TestPeta()
{
StringBuilder strSql = new StringBuilder();
strSql.Append("SELECT EmployeeID,EmployeeNO,EmployeeName,DepartmentID,LoginNo,LoginPWD,IsLogin,GroupID,IsDeleted,Operator,InputDate,EditDate ");
strSql.Append("FROM Employee ");
PetaPoco.Database mcc = new PetaPoco.Database(connectionString, "System.Data.SqlClient");
sw.Reset();
sw.Start();
IList<EmployeeInfo> list = mcc.Query<EmployeeInfo>(strSql.ToString(), null).ToList();
sw.Stop();
MessageBox.Show(list.Count.ToString()); }

Dapper试用的更多相关文章

  1. Dapper试用简例

    1.选择3.5以上框架在新建项目中引用Dapper.dll. 2.在后台写代码,代码写出来后感觉以前学的都白学了. 3. using Dapper; using System; using Syste ...

  2. MySQL via EF6 的试用报告

    1.如何通过 EF6 来连接 MySQL? 2.如何通过 EF6 来实现 CRUD? 2.1.Create 添加 2.2.Retrieve 查询 2.3.Update 修改 2.4.Delete 删除 ...

  3. 开源Dapper的Lambda扩展-Sikiro&period;Dapper&period;Extension V2&period;0

    前言 去年我在业余时间,自己整了一套dapper的lambda表达式的封装,原本是作为了一个个人的娱乐项目,当时也只支持了Sql Server数据库.随之开源后,有不少朋友也对此做了试用,也对我这个项 ...

  4. 给力分享新的ORM &equals;&gt&semi; Dapper&lpar; 转&rpar;

    出处:http://www.cnblogs.com/sunjie9606/archive/2011/09/16/2178897.html 最近一直很痛苦,想选一个好点的ORM来做项目,实在没遇到好的. ...

  5. 也来写写基于单表的Orm(使用Dapper)

    前言 这两天看园子里有个朋友写Dapper的拓展,想到自己之前也尝试用过,但不顺手,曾写过几个方法来完成自动的Insert操作.而对于Update.Delete.Select等,我一直对Diction ...

  6. 【转】&period;NET&lpar;C&num;&rpar;:浅谈程序集清单资源和RESX资源 关于单元测试的思考--Asp&period;Net Core单元测试最佳实践 封装自己的dapper lambda扩展-设计篇 编写自己的dapper lambda扩展-使用篇 正确理解CAP定理 Quartz&period;NET的使用(附源码) 整理自己的&period;net工具库 GC的前世与今生 Visual Studio Package 插件开发之自动生

    [转].NET(C#):浅谈程序集清单资源和RESX资源   目录 程序集清单资源 RESX资源文件 使用ResourceReader和ResourceSet解析二进制资源文件 使用ResourceM ...

  7. Dapper学习&lpar;四&rpar;之Dapper Plus的大数据量的操作

    这篇文章主要讲 Dapper Plus,它使用用来操作大数量的一些操作的.比如插入1000条,或者10000条的数据时,再使用Dapper的Execute方法,就会比较慢了.这时候,可以使用Dappe ...

  8. C&num; 数据操作系列 - 18 让Dapper更强的插件

    0. 前言 在前一篇中我们讲到了Dapper的应用,但是给我们的感觉Dapper不像个ORM更像一个IDbConnection的扩展.是的,没错.在实际开发中我们经常用Dapper作为对EF Core ...

  9. 试用 Azure Sql 数据库

    我们的12月试用账号的免费服务里有一个Azure Sql服务,最近正好自己做一个小工具需要一个数据库,正好可以把它当测试库顺便体验一把Azure Sql. 概述 Azure SQL 数据库 Azure ...

随机推荐

  1. JSP入门 el表达式

    我们已经知道el是jsp-2.0规范的一部分,tomcat-5.x版本以上都已经能够支持jsp-2.0规范,但在更低版本的tomcat和webphere,weblogic中还是无法使用这一便捷方式. ...

  2. Session 的原理及最佳实践

    Http协议是基于请求和响应的一种无状态的协议,而通过session可以使得Http应用变得有状态,即可以"记住"客户端的信息.今天就来说说这个session和cookie. Se ...

  3. python3列表

    Python3 列表 list python的矩阵 python中矩阵可以用双层列表表示 Python列表脚本操作符 len([1, 2, 3]) 3 长度 [1, 2, 3] + [4, 5, 6] ...

  4. element ui Angular学习笔记(一)

    1.element ui安装 npm i --save element-angular 2.Angular-cli引入 引入后需要开启ElModule.forRoot(),也可以单独引入某个组件入El ...

  5. vs2015调试iisexpress无法启动的问题解决方案整理

    我上传的项目代码被同事下载之后使用iisexpress调试一直报错,iisexpress无法启动只能用自己本地的iis,我本地的代码却没问题,试了两种解决办法,问题解决了,在此记录一下也总结一下 方法 ...

  6. Nginx服务器的图片防盗链

    全站的防盗链方法 在/usr/local/webserver/nginx/conf//vhost/xxxx.conf文件要添加防盗链的server段里添加下面的代码: location ~ .*\.( ...

  7. HDMI接口的PCB设计

    1.定义 HDMI的全称是“HighDefinitionMultimedia”,即:高清多媒体接口. HDMI在引脚上和DVI兼容,只是采用了不同的封装.与DVI相比.HDMI可以传输数字音频信号,并 ...

  8. C&num;学习笔记(2)——操作sqlite数据库增删改查

    说明(2017-5-25 10:49:50): 1. app.config文件 Alt+Shift+C创建类,选择“应用程序配置文件”,添加<connectionStrings>,要先打个 ...

  9. Problem C&colon; 零起点学算法82——数组中查找数

    #include<stdio.h> int main(void) { ],m; while(scanf("%d",&n)!=EOF) { ;i<n;i++ ...

  10. php curl get post 方法的封装

    在开发的时候,需要请求别人的接口,那么就要用到curl了 由于很多地方都会用到,就封装了两个,以后应该都会用到 /* * @desc curl POST 方式请求接口 */ function post ...