轻量级ORM框架--PetaPoCo
2014-10-10 10:55 看看能坚持多久! 阅读(599) 评论(0) 编辑 收藏 举报ORM框架在开发中有着非常重要的作用,我之前用过也好几个了有些是公司自己开发的,还有些第三方的,但是如果在一个不是很大型的项目中,我觉得这个PetaPoCo是完全可以胜任了的使用也比较简单,接下去我简单介绍下。
首先在项目中添加petapoco:
然后配置下数据库连接参数和输入命名空间(当然必须现在配置文件中添加节点哦):
然后保存下就会自动生成数据库对应的实体(非常方便),下面是做测试的简单的增删改查:
1 //查询 2 var v = db.Fetch<BTest>("select * from BTest where Keyid='123'")[0]; 3 int Id = v.Id; 4 string Keyid = v.Keyid; 5 string name = v.Bname; 6 v.Bname = "李四"; 7 //修改,添加 8 v.Save(); 9 //删除 10 //v.Delete(); 11 //单个实体查询 12 //var c = db.SingleOrDefault<BTest>("where Keyid='123'"); 13 //Response.Write(c.Bname); 14 //非常简单的事务 15 //事务开始 16 //db.BeginTransaction(); 17 //try 18 //{ 19 // var c = db.Execute("update btest set bname='张三' where keyid='123'"); 20 // int f = db.Execute("insert into btest(bname,keyid)values('老四','234')"); 21 // 提交事务 22 // db.CompleteTransaction(); 23 // int d = db.Execute("insert into btest(bname,keyid)('老三','234')"); 24 //} 25 //catch 26 //{ 27 //事务回滚 28 // db.AbortTransaction(); 29 //}
下面是一个PetaPoCo的分页:
1.先来看下分页模型:
1 public class Page<T> 2 { 3 /// <summary> 4 /// 当前页码 5 /// </summary> 6 public long CurrentPage 7 { 8 get; 9 set; 10 } 11 12 /// <summary> 13 ///总页码 14 /// </summary> 15 public long TotalPages 16 { 17 get; 18 set; 19 } 20 21 /// <summary> 22 /// 总条数 23 /// </summary> 24 public long TotalItems 25 { 26 get; 27 set; 28 } 29 30 /// <summary> 31 /// 每页显示条数 32 /// </summary> 33 public long ItemsPerPage 34 { 35 get; 36 set; 37 } 38 39 /// <summary> 40 /// 记录集合 41 /// </summary> 42 public List<T> Items 43 { 44 get; 45 set; 46 } 47 48 /// <summary> 49 ///自定义任何值 50 /// </summary> 51 public object Context 52 { 53 get; 54 set; 55 } 56 }
2.分页的使用Demo:
1 //cts是指请求的页码,ts是指没页显示的条数 2 Page<UsersT> pf = db.Page<UsersT>(cts, ts, "select * from userst order by id desc"); 3 content.Text = "当前第" + pf.CurrentPage + "页" + " " + "总共" + pf.TotalPages + "页" + " " + "总共" + pf.TotalItems + "条记录" + " " + "每页显示" + pf.ItemsPerPage + "条记录"; 4 foreach (var item in pf.Items) 5 { 6 string str = "</br>" + item.ID + " "; 7 str += item.UserZhangFu + " "; 8 str += item.Mobile; 9 str += "</br>"; 10 content.Text += str; 11 }
我设置断点看了下,最后是通过这个sql语句的形式请求的数据库:
最后的效果如下:
有时候从数据库取数据可能涉及到多张表,而数据库又没建立对应的视图,那就需要临时实体类似mvc中的视图model,下面是我添加的一个测试实体:
1 public class TestDB 2 { 3 public string UserZhangFu { get; set; } 4 public string Mobile { get; set; } 5 public string Bname { get; set; } 6 }
使用和之前的一样,非常方便不需要做任何的配置:
1 var v = db.Fetch<TestDB>("select UserZhangFu,Mobile,Bname from Userst as a left join Btest as b on a.id=b.id where a.id=2 ")[0]; 2 Response.Write(v.UserZhangFu+" "+v.Mobile+" "+v.Bname);
输出效果如下:
上面对PetaPoCo做了非常简单的使用介绍,而这个框架是完全开源的,所以在使用过程中可以F12看下底层是如何构建sql语句,如何给实体属性赋值等等一系列,其实大多数的ORM框架都是比较类似的,熟悉一种也就基本能了解ORM的整个思路了,仅供参考!