设为首页 收藏本站
查看: 1482|回复: 0

[经验分享] PetaPoco介绍

[复制链接]

尚未签到

发表于 2016-11-22 10:20:59 | 显示全部楼层 |阅读模式
  Petapoco一
  PetaPoco是一个微小的,快速的,单个文件的微型ORM,可以运行在.NET和Mono平台上。
  特性:


  • 微小的,没有依赖…单个文件,可以容易的添加进任何项目
  • 可以与严格的简单的POCOS对象工作或者有特性标记的POCOS
  • 帮助方法:Inert/Delete/Update/Save 和 IsNew
  • 内嵌分页方法
  • 事物支持
  • 良好的性能
  • 包含T4模板自动产生POCO类
  • 使用Sql查询而不是怪异的Linq语法(汗一个)
  • 包含一个SQL Builder类产生Sql更加容易
  • 兼容SQL Server,SQL Server CE,MySql, PostgreSQL and Oracle.
  • 可以再.NET 3.5或者Mono 2.6 以上版本使用
  • 支持动态在.NET4.0和Mono 2.8
  • 开源(Apache License)
  简单介绍下用法
  首先,定义一个POCO类


DSC0000.gif DSC0001.gif View Code


// Represents a record in the "articles" table
public class article
{
    public long article_id { get; set; }
    public string title { get; set; }
    public DateTime date_created { get; set; }
    public bool draft { get; set; }
    public string content { get; set; }
}
  下一步,创建一个PetaPoco.Database 并且运行查询。


View Code


// Create a PetaPoco database object
var db=new PetaPoco.Database("connectionStringName");
// Show all articles   
foreach (var a in db.Query<article>("SELECT * FROM articles"))
{
    Console.WriteLine("{0} - {1}", a.article_id, a.title);
}
  查询 scalar:


View Code


long count=db.ExecuteScalar<long>("SELECT Count(*) FROM articles");
  获取单个记录


View Code  分页


View Code


var result=db.Page<article>(1, 20, // <-- page number and items per page
        "SELECT * FROM articles WHERE category=@0 ORDER BY date_posted DESC", "coolstuff");
  会返回一个Page对象:


View Code


public class Page<T> where T:new()
{
    public long CurrentPage { get; set; }
    public long ItemsPerPage { get; set; }
    public long TotalPages { get; set; }
    public long TotalItems { get; set; }
    public List<T> Items { get; set; }
}
  


Inserts, Updates and Deletes
  PetaPoco 有一些帮助为insert, update 和 delete 操作.
  可以有几种不同的方式插入,先介绍最简单的一种:


View Code


// Create the article
var a=new article();
a.title="My new article";
a.content="PetaPoco was here";
a.date_created=DateTime.UtcNow;
// Insert it
db.Insert(a);
// by now a.article_id will have the id of the new article
  更新


View Code


// Get a record
var a=db.SingleOrDefault<article>("SELECT * FROM articles WHERE article_id=@0", 123);
// Change it
a.content="PetaPoco was here again";
// Save it
db.Update(a);
  删除


View Code


db.Delete("articles", "article_id", null, 123);
  PetaPoco可以获取多个实体,并且petapoco无侵入性。譬如
  可以获取一堆一,一对多,多对多的数据集。现在在项目中使用,十分方便,基本满足了要求。同时也对其进行了扩展,后续会说到。
  关于PetaPoco先介绍到这里,有兴趣的可以去http://www.toptensoftware.com/petapoco/ 这个网站去了解,我后面争取多写和翻译一些关于petapoco的文章。深入其内部机制。


  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-303921-1-1.html 上篇帖子: 使用NHibernate 3.2实现Repository(ORuM)(五)MVCQuick.Framework.Repository 下篇帖子: 将SQLite移植到ARM上
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表