轻量级ORM框架--PetaPoCo

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的整个思路了,仅供参考!

时间: 2024-11-09 00:14:44

轻量级ORM框架--PetaPoCo的相关文章

轻量级ORM框架初探-Dapper与PetaPoco的基本使用

一.EntityFramework EF是传统的ORM框架,也是一个比较重量级的ORM框架.这里仍然使用EF的原因在于为了突出轻量级ORM框架的性能,所谓有对比才有更优的选择. 1.1 准备一张数据库表 (1)For MSSQL CREATE TABLE [dbo].[Posts] ( [Id] INT NOT NULL PRIMARY KEY IDENTITY, [CategoryId] INT NOT NULL, [Slug] VARCHAR(120) NOT NULL, [Title] N

c# 轻量级ORM框架 实现(一)

发布一个自己写的一个轻量级ORM框架,本框架设计期初基于三层架构.所以从命名上来看,了解三层的朋友会很好理解. 设计该框架的目的:不想重复的写增删改查,把精力放到功能实现上. 发布改框架的原因:希望给初学者一个参考,希望能给予好的建议,给自己一个展示机会. 在我开始之前,先说明一下,我对"软件工程学"概念东西几乎不通,最高文化程度:初二,所以不喜勿喷. 开始我的orm设计最底层 最底层的是一个DalBase,它是一个抽象的,实现了增删改查的基本操作. 它既然是一个抽象的,那么它的内部就

C#轻型ORM框架PetaPoco试水

近端时间从推酷app上了解到C#轻微型的ORM框架--PetaPoco.从github Dapper 开源项目可以看到PetaPoco排第四 以下是网友根据官方介绍翻译,这里贴出来. PetaPoco是一款适用于.Net 和Mono的微小.快速.单文件的微型ORM. PetaPoco有以下特色: 微小,没有依赖项--单个的C#文件可以方便的添加到任何项目中. 工作于严格的没有装饰的Poco类,和几乎全部加了特性的Poco类 Insert/Delete/Update/Save and IsNew

c# 轻量级 ORM 框架 之 DBHelper 实现 (三)

周末了比较清闲,把自己的orm框架整理了下,开源了. 已经做出来的东西通常感觉有些简单,一些新手或许听到"框架"一类的词觉得有些"高深",简单来说orm就是把ado的封装. 在介绍这个框架的第一篇博文,已经把DalBase介绍了一下设计思路,本篇的DBHelper对象也是给dalBase来用的,可以说框架的所有定义对象都是为了它. 这里起名叫DBHelper,因为我也是从写SQLHelper开始的,DBHelper只不过是所有类型对ado操作的各种方法的封装,所以本

c# 轻量级ORM框架 之 WhereHelper (二)

上篇文章发布了一些设计orm框架基层的和实现,有朋友提出WhereHelper是亮点,能被认可我表示高兴. 我就把WhereHelper设计思想和代码公开下. WhereHelper 的概念就是再拼接where 条件,为了能兼容各种数据库和参数化查询,故封装了该对象. 首先根据我的框架结构: 1.Common库 这里主要定义了,所有层都访问的类型及常用方法,因为是介绍WhereHelper的实现,对其它就不做详细解释了. WhereHelper定义到这一层是想着UI会用到该查询,故把该类型的定义

c# 轻量级 ORM 框架 之 Model解析 (四)

关于orm框架设计,还有必要说的或许就是Model解析了,也是重要的一个环节,在实现上还是相对比较简单的. Model解析,主要用到的技术是反射了,即:把类的属性与表的字段做映射. 把自己的设计及实现思路写出来也希望能有人给很好的优化建议,同时也给新手一点启发吧. 首先先给Model属性定义特性,先普及一下"特性"的概念和为什么用特性(Attribute). 简单来说,特性是给一个类,或方法,或属性 打上一个标记(或者叫附加信息),具体理解还是看例子比较好吧, 在做类与表之间映射时,我

Android轻量级ORM框架ActiveAndroid入门教程(转)

注:没有找到出处,如有侵犯,请告知 开始ActiveAndroid神奇之旅: 在AndroidManifest.xml中我们需要添加这两个 AA_DB_NAME (数据库名称,这个name不能改,但是是可选的,如果不写的话 是默认的"Application.db"这个值) AA_DB_VERSION (数据库版本号,同样是可选的 – 默认为1) <manifest ...> <application android:name="com.activeandro

.NET轻量级ORM框架Dapper入门精通

一.课程介绍 本次分享课程包含两个部分<.NET轻量级ORM框架Dapper修炼手册>和<.NET轻量级ORM框架Dapper葵花宝典>,阿笨将带领大家一起领略轻量级ORM框架Dapper的魅力. 本次分享课程适合人群范围: 一.<.NET轻量级ORM框架Dapper修炼手册>适合人群如下: 1.我是一个新手,主要工作面向的是MS SQL Server数据库,那么选择修炼手册一定没错. 2.对Dapper从没有过了解或者了解不全面的同学,想通过学习进一步提升对Dappe

分享自己写的基于Dapper的轻量级ORM框架~

1.说明 本项目是一个使用.NET Standard 2.0开发的,基于 Dapper 的轻量级 ORM 框架,包含基本的CRUD以及根据表达式进行一些操作的方法,目前只针对单表,不包含多表连接操作. github:https://github.com/iamoldli/NetSql 2.使用方法 2.2.安装 Install-Package NetSql 2.2.创建实体 创建Article实体类,继承EntityBase public class Article : EntityBase {