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

}

  1. 创建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);

}

查询返回参数

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

查询得到一行记录:

var a = db.SingleOrDefault<article>("SELECT * FROM articles WHERE
[email protected]", 123));

分页查询

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

var
result=db.Page<article>(1, 20, // <-- page number and items per
page

"SELECT * FROM articles WHERE
[email protected] ORDER BY date_posted DESC", "coolstuff");

Query vs Fetch

Database 对象有两个获取数据的方法:Query
和Fetch。这两个方法非常相似,不同的是Fetch方法返回一个POCO类的List<>,而Query使用 yield return
迭代所有数据,这些数据并没有加载到内存中。

需要注意的是:应该小心再开始一个新的查询之前完成和处理掉上一个查询,否则会曝异常。所以这种情况下, 应该优先使用
Fetch。

出现这个问题的时候,一直找不到原因,看了源码注释之后,才知道的。

执行非查询的sql 语句

使用Execute 方法执行一个不带查询的命令:

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

时间: 2024-10-11 17:07:15

PetaPoco 使用总结(一)的相关文章

[原创].netcore通过PetaPoco操作mysql、sqlserver等

一.引入PetaPoco.NetCore,PetaPoco.NetCore 是基于PetaPoco的轻量ORM,支持.netframework和.netcore,支持单个实体对象映射,也支持多实体对象映射,NetCore未需指定驱动连接,其它API一致. github地址:https://github.com/qingask/PetaPoco.NetCore nugut地址:https://www.nuget.org/packages/PetaPoco.NetCore 通过nuget安装 PM>

C#轻型ORM框架PetaPoco试水

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

轻量级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

【译】微型ORM:PetaPoco【不完整的翻译】

PetaPoco是一款适用于.Net 和Mono的微小.快速.单文件的微型ORM. PetaPoco有以下特色: 微小,没有依赖项……单个的C#文件可以方便的添加到任何项目中. 工作于严格的没有装饰的Poco类,和几乎全部加了特性的Poco类 Insert/Delete/Update/Save and IsNew 等帮助方法. 分页支持:自动得到总行数和数据 支持简单的事务 更好的支持参数替换,包括从对象属性中抓取命名的参数. 很好的性能,剔除了Linq,并通过Dynamic方法快速的为属性赋值

PetaPoco入门(一)

1. ORM概括 1.1. ORM简介 ORM 对象-关系映射(Object/Relation Mapping,简称ORM),是随着面向对象的软件开发方法发展而产生的.面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是 企业级应用环境中永久存放数据的主流数据存储系统.对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据.内 存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系.因此,对象-关系映射(

视频教程--ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库

说好的给园子里的朋友们录制与<ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库> 这篇博客相对应的视频,由于一个月一来没有时间录制,今天我兑现了给朋友们的承诺.. 本次视频教程的目录为 视频.代码.资料,其中视频有4段,资料是我收集的相关资料.. 视频下载地址:http://pan.baidu.com/s/1c05sysC 希望大家多多支持... 郝喜路 2014年6月8日 11:11:02   http://haoxilu.cn

PetaPoco join连接问题

petapoco是一个轻型的ORM,在这里不做详细介绍了.本文主要对如何对petapoco对象使用join连接,查询相关数据库. 1.首先创建一个简单的数据库,包含两个表.本文使用sql server 2008创建,如下图所示. SubTask表中有三个属性分别为Id.TaskId和Status,Task有两个属性分别为Id和Style,都是简单定义的,如下图所示.             2,创建一个控制台程序,加载petapoco.dll,然后分别创建两个petapoco对象,分别为subt

PetaPoco入门(二)

1. Petapoco基本用法 1.1. 创建示例工程 首先创建一个工程文件,为了便于展示数据这里创建一个类型为:WindowsApplication的工程文件.命名为:PetapocoTest. 程序最终布局及功能预览如下: 1.2. 添加petapoco包 在项目文件的Reference上右键, 选择“管理NuGet程序包”,并搜索Petapoco,安装之. 1.3. 添加数据库连接 在app.config或web.config文件中添加数据库连接串. 下面是连接SQL Server: <c

PetaPoco的几个特性

在PetaPoco中,Brad并没有定义太多Attribute来修饰Models或Fields.这些为数不多的几个Attribute如下: ColumnAttribute ExplicitColumnsAttribute IgnoreAttribute PrimaryKeyAttribute ResultColumnAttribute TableNameAttribute ExplicitColumnsAttribute 和 ColumnAttribute 使用ExplicitColumnsAt

[转]PetaPoco入门(一)

1. ORM概括 1.1. ORM简介 ORM 对象-关系映射(Object/Relation Mapping,简称ORM),是随着面向对象的软件开发方法发展而产生的.面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统.对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据.内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系.因此,对象-关系映射(OR