转自:http://www.cnblogs.com/huangkaiyan10/p/4640548.html
项目背景
前一段时间,开始做一个项目,在考虑数据访问层是考虑技术选型,考虑过原始的ADO.NET、微软的EF、NH等。再跟经理讨论后,经理强调不要用Ef,NH做ORM,后期的sql优化不好做,公司也没有人对EF,Nh 等orm优化比较熟悉的。强调说的,我们的项目要做的得简单,可以使用ADO.NET 写原始的sql。但我自己还是喜欢ORM的,它可以提高数据访问层的开发。有一天,在订阅张善友 doNet跨平台微信公众号里,看到Dapper的推荐。了解之后,我自己喜欢喜欢Dapper,可以满足我这个项目的经理的要求,同时Dapper 对数据库的访问能做到Ado.net一样快。
下面的链接是Dapper 在github的地址 https://github.com/StackExchange/dapper-dot-net。
使用 Dapper 进行简单增删改查示例
1、首先根据数据库表定义实体对象, 这个工作完全可以使用T4、Nvelocity或者RazorEngine 写一个代码生成器根据数据库表对象自动生成数据库表实体对象。这里我自己根据表写了一个对象
1 [Table("UserRole")]
2 public class UserRoleDbEntity:DbEntityModelBase
3 {
4 [Description("用户编号,来自用户表")]
5 public int UserId
6 {
7 get;
8 set;
9 }
10
11 [Description("角色编号,来自于角色表")]
12 public int RoleId
13 {
14 get;
15 set;
16 }
17 /// <summary>
18 /// 备注:AuthorityEnum.AuthorityValue 的取值范围是根据 AuthorityEnum位运算 或 与 的结果集;不可随意赋值
19 /// </summary>
20 [Description("权限值")]
21 public int AuthorityValue { get; set; }
22
23 /// <summary>
24 /// 根据 AuthorityEnum 枚举值生成的描述
25 /// </summary>
26 [Description("权限描述")]
27 public string AuthorityDescription { get; set; }
28 }
29
30 /// <summary>
31 /// 所有DbEntityModel项目中的实体必须继承DbEntityModelBase或其子类,使用supperType模式控制共有子类的行为或者状态,此项目中的类根据数据库基本表或者视图保持基本一致
32 /// </summary>
33 public abstract class DbEntityModelBase
34 {
35 [Description("Guid标识")]
36 public string GuidMark
37 {
38 get;
39 set;
40 }
41 [Description("自增Id列")]
42 public int Id
43 {
44 get;
45 set;
46 }
47 [Description("排序,倒序")]
48 public int Sort
49 {
50 get;
51 set;
52 }
53 }