PetaPoco 使用总括(一)

PetaPoco 使用统计(一)

前段时间,集团的一个路期就此一个ORM
的框架,通过相比较 Dapper
PetaPoco ,即使Dapper 效能非常强劲,速度更快。
不过终极依然选项了相比较简单的PetaPoco。
因为PetaPoco更加的简单,所有的代码只发1500多行。通过一个项目标考试,PetaPoco使用简单,无另外需要配置,无需冗长的照耀文件,性能也不易。

PetaPoco是同缓适用于.NET应用程序的轻型对象关联映射器(ORM,  Object
Relational Mapper)。与那个效果全的ORM(如NHibernate或Entity
Framework)不同的凡,PetaPoco更青睐易用性和特性,而非充裕的效能。使用PetaPoco只需要引入一个C#文本,可以动用强类型的
POCO(Plain Old CLR Object),并辅助以T4模板生成的近乎,和襄助.net 4.0
的 Dynamic对象等等。

如今,随着多开源项目标公布,微型ORM已起初成为平等种植流行趋势。其他部分阳的适用于.NET的花色有Dapper和Massive。那个微型ORM相对于效用完备的ORM而言,会重新简约、更迅捷,微型ORM平时要求开发人士手动编写SQL语句,而非净动态变化。它们同样无欲冗长的映射文件,因为对此维护及调试而言,那一个炫耀文件只会于过程易得单调乏味。

 

PetaPoco最被人谢兴趣的法力包括:

  • 而和SQL Server、SQL Server
    CE、MySQL、PostgreSQL以及Oracle数据库协同工作。
  • 含有对Insert/Delete/Update/Save以及IsNew的大半只援方法。
  • 支撑简事务
  • 对翻页请求会活动测算总记录数,并收获特定分页。
  • 协助参数替换,可以从目的属性被抓取命名参数(named parameters)
  • 连一个吃资源分外少的SQL Builder类
  • 一部分记录更新
  • 包括T4 Templates,能够用来因数据库结构变化POCO类。
  • 很好的特性,剔除了Linq,并经Dynamic方法急迅的也罢性赋值

于性方面,PetaPoco仅次于Dapper,速度就稍逊于手工编码的数额访问层(DAL,
Data Access Layer)。

 

PetaPoco下载地址:

  GitHub – https://github.com/toptensoftware/petapoco

  例子:来自PetaPoco官网

 

查询

  1.定义Poco 类 

// 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; }

}

 

  2.制造PetaPoco数据库连接 ,并施行查询

var db=new PetaPoco.Database("connectionStringName");

// 查询所有articles
foreach (var a in db.Query<article>("SELECT * FROM articles"))

{

    Console.WriteLine("{0} - {1}", a.article_id, a.title);

}

 

 

SQL Server,查询重回参数

 

long count=db.ExecuteScalar<long>("SELECT Count(*) FROM articles");

 

 

查询得到一条龙记录

  var a = db.SingleOrDefault<article>("SELECT * FROM articles WHERE article_id=0", 123));

 

分页查询

         PetaPoco 自带了分页功用,可以自行执行分页请求。

    // <– 1 跟 20 分级是页码和每页条数

   var result=db.Page<article>(1, 20,  "SELECT * FROM articles WHERE category=@0 ORDER BY date_posted DESC", "coolstuff");

   /// PetaPoco 源码中,返回的 Page 对象 的各个属性  
   /// <summary>
    ///     Holds the results of a paged request.
    /// </summary>
    /// <typeparam name="T">The type of Poco in the returned result set</typeparam>
    public class Page<T>
    {
        /// <summary>
        ///     The current page number contained in this page of result set
        /// </summary>
        public long CurrentPage { get; set; }

        /// <summary>
        ///     The total number of pages in the full result set
        /// </summary>
        public long TotalPages { get; set; }

        /// <summary>
        ///     The total number of records in the full result set
        /// </summary>
        public long TotalItems { get; set; }

        /// <summary>
        ///     The number of items per page
        /// </summary>
        public long ItemsPerPage { get; set; }

        /// <summary>
        ///     The actual records on this page
        /// </summary>
        public List<T> Items { get; set; }

        /// <summary>
        ///     User property to hold anything.
        /// </summary>
        public object Context { get; set; }
    }

Query vs Fetch

 

  Database 对象发出少只获取数据的方法:Query
和Fetch。这片个办法相当相似,不同之是Fetch方法重返一个POCO类的List<>,而Query使用
yield return 迭代所有数据,这些数量并无加载到内存中。

        

  需要小心的凡:应该小心还开一个新的查询在此之前完成和处理掉上一个查询,否则会曝分外。所以这种景观下,
应该先使用 Fetch。

 SQL Server 1

  出现这问题之早晚,一向寻找不至由,看了源码注释之后,才通晓的。

 

行非查询的sql 语句

 

  使用Execute 方法执行一个免牵动查询的一声令下:

db.Execute("DELETE FROM articles WHERE draft<>0");

 

 

 

相关文章