dapper 是一个效率非常高的orm  框架 ,效率要远远大于 我们大微软的EF .    它只有一个类文件,非常之小。(在 EF 5.0 后 微软已经做了 改进)

ps; 由于之前我也没测试过,只是看过官方之前的数据,还是实践出真知 。 在这里谢谢 深蓝医生 的指正。不过它还是一个非常优秀的微型orm框架。

1,首先下载dapper  这里下载   .

2,下载插件  Rainbow

Package Manager Console  中输入

  1. PM> Install-Package Dapper.Rainbow

  

准备工作 完成  下面是 demo 。

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Data.SqlClient;
  6.  
  7. using Dapper;
  8.  
  9. // to have a play, install Dapper.Rainbow from nuget
  10.  
  11. namespace TestDapper
  12. {
  13. class Program
  14. {
  15. // no decorations, base class, attributes, etc
  16. class Product
  17. {
  18. public int Id { get; set; }
  19. public string Name { get; set; }
  20. public string Description { get; set; }
  21. public DateTime? LastPurchase { get; set; }
  22. }
  23.  
  24. // container with all the tables
  25. class MyDatabase : Database<MyDatabase>
  26. {
  27. public Table<Product> Products { get; set; }
  28. }
  29.  
  30. static void Main(string[] args)
  31. {
  32. var cnn = new SqlConnection("Data Source=.;Initial Catalog=tempdb;Integrated Security=True");
  33. cnn.Open();
  34.  
  35. var db = MyDatabase.Init(cnn, commandTimeout: 2);
  36.  
  37. try
  38. {
  39. db.Execute("waitfor delay '00:00:03'");
  40. }
  41. catch (Exception)
  42. {
  43. Console.WriteLine("yeah ... it timed out");
  44. }
  45.  
  46. db.Execute("if object_id('Products') is not null drop table Products");
  47. db.Execute(@"create table Products (
  48. Id int identity(1,1) primary key,
  49. Name varchar(20),
  50. Description varchar(max),
  51. LastPurchase datetime)");
  52.  
  53. int? productId = db.Products.Insert(new {Name="Hello", Description="Nothing" });
  54. var product = db.Products.Get((int)productId);
  55.  
  56. product.Description = "untracked change";
  57.  
  58. // snapshotter tracks which fields change on the object
  59. var s = Snapshotter.Start(product);
  60. product.LastPurchase = DateTime.UtcNow;
  61. product.Name += " World";
  62.  
  63. // run: update Products set LastPurchase = @utcNow, Name = @name where Id = @id
  64. // note, this does not touch untracked columns
  65. db.Products.Update(product.Id, s.Diff());
  66.  
  67. // reload
  68. product = db.Products.Get(product.Id);
  69.  
  70. Console.WriteLine("id: {0} name: {1} desc: {2} last {3}", product.Id, product.Name, product.Description, product.LastPurchase);
  71. // id: 1 name: Hello World desc: Nothing last 12/01/2012 5:49:34 AM
  72.  
  73. Console.WriteLine("deleted: {0}", db.Products.Delete(product.Id));
  74. // deleted: True
  75.  
  76. Console.ReadKey();
  77. }
  78. }
  79. }

  

上面 这个MyDatabase ,实现了和 EF同样的机制 ,有了这个相当于EF 上下文的东西,就方便很多了, 拿到这个上下文后,就能直接操作所有的表了 ,方便了统一管理  ,用着很爽呀。。  .

分享一个灰常好的 dapper 扩展插件: Rainbow的更多相关文章

  1. dapper 扩展插件: Rainbow

    dapper 扩展插件: Rainbow dapper 是一个效率非常高的orm  框架 ,效率要远远大于 我们大微软的EF .    它只有一个类文件,非常之小. 1,首先下载dapper  这里下 ...

  2. 分享一个自己写的vue多语言插件smart-vue-i18n

    前言 目前有比较成熟的方案(vue-i18n)了解了下,并且实用了一下感觉对于我在使用的项目来说略显臃肿,功能比较多,所以压缩的会比较大,在移动端不太适合所以自己花一天时间撸了一个vue多语言插件,压 ...

  3. 介绍一个超好用的HICHARTS扩展插件

    因为需要,所以HIGHCHARTS了解一下是很有必要的. 但原始应用确实效率不行. 刚好,现在有个需求是从一系列的JSON里抽出表格数据,再显示图形. jquery.highchartsTable.j ...

  4. Asp.net 面向接口可扩展框架之数据处理模块及EntityFramework扩展和Dapper扩展(含干货)

    接口数据处理模块是什么意思呢?实际上很简单,就是使用面向接口的思想和方式来做数据处理. 还提到EntityFramework和Dapper,EntityFramework和Dapper是.net环境下 ...

  5. 分享一个漂亮的ASP.NET MVC界面框架

    本文分享一个插件化的界面框架,该框架提供了用户.角色.权限管理功能,也提供了插件的管理和插件中心.下图是该界面框架的样式(全部源码和原理介绍下一篇分享,推荐越多,源码放的越早,呵呵). 要使用该界面框 ...

  6. Git.Framework 框架随手记-- 分享一个"比较垃圾"的项目

    本文主要分享一个Git.Framework 开发的一个项目的部分源码,此项目代码"比较垃圾",所以请各位码农,码畜,码神,码圣勿喷!发此文只为记录工作问题以及分享问题! 一. 项目 ...

  7. 分享一个自己写的MVC+EF “增删改查” 无刷新分页程序

    分享一个自己写的MVC+EF “增删改查” 无刷新分页程序 一.项目之前得添加几个组件artDialog.MVCPager.kindeditor-4.0.先上几个效果图.      1.首先建立一个数 ...

  8. 【开源.NET】 分享一个前后端分离的轻量级内容管理框架

    开发框架要考虑的面太多了:安全.稳定.性能.效率.扩展.整洁,还要经得起实践的考验,从零开发一个可用的框架,是很耗时费神的工作.网上很多开源的框架,为何还要自己开发?我是基于以下两点: 没找到合适的: ...

  9. freemarker常见语法大全,灰常有用!

    由于公司前端使用的技术是freemarker,于是没事就在网上看看别人写的关于freemarker的文章,感觉freemarker灰常简单,比jsp好用,jsp太乱太臃肿了,另外推荐大家看看freem ...

随机推荐

  1. [Qt Creator 快速入门] 第2章 Qt程序编译和源码详解

    一.编写 Hello World Gui程序 Hello World程序就是让应用程序显示"Hello World"字符串.这是最简单的应用,但却包含了一个应用程序的基本要素,所以 ...

  2. SPFA+Dinic HDOJ 5294 Tricks Device

    题目传送门 /* 题意:一无向图,问至少要割掉几条边破坏最短路,问最多能割掉几条边还能保持最短路 SPFA+Dinic:SPFA求最短路时,用cnt[i]记录到i最少要几条边,第二个答案是m - cn ...

  3. ListView(4)取消GridView/ListView item被点击时的效果

    方法一,在代码中设置 gridView.setSelector(new ColorDrawable(Color.TRANSPARENT)); listView.setSelector(new Colo ...

  4. Android 性能优化(20)多核cpu入门:SMP Primer for Android

    SMP Primer for Android 1.In this document Theory Memory consistency models Processor consistency CPU ...

  5. linux centos7 安装nginx并启动

    Linux下安装Nginx完整教程及常见错误解决方案:https://blog.csdn.net/chenxiaochan/article/details/63688346 CentOS 7 安装Ng ...

  6. Linux学习日记之crontab使用notify-send实现每小时通知提醒

    crontab命令用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行 通过crontab -e 可以打开编辑文件添加新的命令 notif ...

  7. dede手机端首页点击文章内容、列表,却跳到pc端

    手机访问到手机端首页,点击列表.内容.图片等都跳到pc端,是什么原因? 查看m模板里面的index.html文件生成的代码是绝对路径(数字随机)13.html 而不是view.php?aid=13 解 ...

  8. 3星|林毅夫《战胜命运》:事实证明华盛顿共识是错误的,GIFF是穷国发展正道。

    本书是林毅夫与喀麦隆一位经济学家合著.基本的观点是:事实证明华盛顿共识是错误的,GIFF是穷国发展正道.GIFF的主要思想是政府找到对标国家,强力推行产业政策. 作为一个经济学外行,读后感觉关于华盛顿 ...

  9. 关于.Net的强名称(Strong Name)

    下面是我在CSDN上发表的<关于.Net的强名称(Strong Name)>,转载于此. 关于.Net的强名称(Strong Name)  

  10. Shell输入/输出重定向

    输出重定向 重定向一般通过在命令间插入特定的符号来实现.特别的,这些符号的语法如下所示 command1 >file1 上面这个命令执行command1然后将输出的内容存入file1. 注意任何 ...