C#轻型ORM框架PetaPoco试水
近端时间从推酷app上了解到C#轻微型的ORM框架--PetaPoco。从github Dapper 开源项目可以看到PetaPoco排第四

以下是网友根据官方介绍翻译,这里贴出来。
PetaPoco是一款适用于.Net 和Mono的微小、快速、单文件的微型ORM。
PetaPoco有以下特色:
- 微小,没有依赖项……单个的C#文件可以方便的添加到任何项目中。
- 工作于严格的没有装饰的Poco类,和几乎全部加了特性的Poco类
- Insert/Delete/Update/Save and IsNew 等帮助方法。
- 分页支持:自动得到总行数和数据
- 支持简单的事务
- 更好的支持参数替换,包括从对象属性中抓取命名的参数。
- 很好的性能,剔除了Linq,并通过Dynamic方法快速的为属性赋值
- T4模板自动生成Poco类
- 查询语言是Sql……不支持别扭的fluent或Linq语法(仁者见仁,智者见智)
- 包含一个低耦合的Sql Builder类,让内联的Sql更容易书写
- 为异常信息记录、值转换器安装和数据映射提供钩子。(Hooks for logging exceptions, installing value converters and mapping columns to properties without attributes.)
- 兼容SQL Server, SQL Server CE, MySQL, PostgreSQL and Oracle。
- 可以在.NET 3.5 或Mono 2.6或更高版本上运行
- 在.NET 4.0 和Mono 2.8下支持dynamic
- NUnit单元测试
- 开源(Apache License)
- 所有功能大约用了1500行代码
如何获取PetaPoco?
因为中国使用win7系统的比较多,然后win7自带.net3.5框架,所以笔者从nuget下载了4.0.3版本的PetaPoco
获取地址:
可以和笔者一样安装4.0.3版本

如下图,回车即可

安装之后,如果你是.net3.5的编译环境,请关闭关闭dynamic支持:
1、打开项目属性
2、切换到“生成”选项卡
3、在“条件编译符号”添加PETAPOCO_NO_DYNAMIC

添加应用程序配置文件app.config

在文件里面填写sql链接参数:
我这里用的是SqlServer数据库
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="connectionString" connectionString="Data Source=.\sql2008;Initial Catalog=test;User ID=sa;Password=123" providerName="System.Data.SqlClient"/>
</connectionStrings>
</configuration>
然后在T4模板中,填上刚才加的链接参数,一保存就可以自动生成对应的实体


如图

下面贴出一部分测试代码
using PetaPocoDemo.Models;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace PetaPocoDemo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
//创建一个petapoco对象
var db = new PetaPoco.Database("connectionString"); //遍历查询文章表
foreach (var a in db.Query<article>("select * from article"))
{
MessageBox.Show(a.article_id + "-------" + a.title);
}
//返回一个scalar数量
var count = db.ExecuteScalar<int>("select count(*) from article");
MessageBox.Show("count:" + count.ToString()); //返回一行记录
var row = db.SingleOrDefault<article>("select * from article where article_id='1'");
MessageBox.Show(row.content); //插入记录
var newArticle = new article();
newArticle.article_id = ;
newArticle.title = "绿书";
newArticle.content = "可持续发展绿色内容";
newArticle.date_created = DateTime.UtcNow; if (Convert.ToInt32(db.Insert("article", "article_id",false, newArticle)) > )
{
MessageBox.Show("sucess");
}
else
{
MessageBox.Show("fail");
}
}
}
}
未完待续
C#轻型ORM框架PetaPoco试水的更多相关文章
- ASP .Net Core 使用 Dapper 轻型ORM框架
一:优势 1,Dapper是一个轻型的ORM类.代码就一个SqlMapper.cs文件,编译后就40K的一个很小的Dll. 2,Dapper很快.Dapper的速度接近与IDataReader,取列表 ...
- ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库
前段时间在园子里看到了小蝶惊鸿 发布的有关绿色版的Linux.NET——“Jws.Mono”.由于我对.Net程序跑在Linux上非常感兴趣,自己也看了一些有关mono的资料,但是一直没有时间抽出时间 ...
- ORM之PetaPoco
近端时间从推酷app上了解到C#轻微型的ORM框架--PetaPoco.从github Dapper 开源项目可以看到PetaPoco排第四 以下是网友根据官方介绍翻译,这里贴出来. PetaPoco ...
- 轻量级ORM框架初探-Dapper与PetaPoco的基本使用
一.EntityFramework EF是传统的ORM框架,也是一个比较重量级的ORM框架.这里仍然使用EF的原因在于为了突出轻量级ORM框架的性能,所谓有对比才有更优的选择. 1.1 准备一张数据库 ...
- 视频教程--ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库
说好的给园子里的朋友们录制与<ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库> 这篇博客相对应的视频,由于一个月一来没有时 ...
- PetaPoco - 轻量级高性能的ORM框架(支持.NET Core)
我们都知道ORM全称叫做Object Relationship Mapper,也就是可以用object来map我们的db. 而且市面上的orm框架有很多,有重量级的Entity Framework,有 ...
- C# 性能优化 之 秒表 Stopwatch。 Dapper一个和petapoco差不多的轻量级ORM框架
Sweet小马 小马同学的编程日记. C# 性能优化 之 秒表 Stopwatch. 生词解释:Diagnostics[,daɪəg'nɑstɪks] n.诊断学 using System.Diagn ...
- Dapper一个和petapoco差不多的轻量级ORM框架
我们都知道ORM全称叫做Object Relationship Mapper,也就是可以用object来map我们的db,而且市面上的orm框架有很多,其中有一个框架 叫做dapper,而且被称为th ...
- 轻量级的.Net ORM框架介绍
轻量型 ORM 组件 FluentData 官网https://fluentdata.codeplex.com/ http://www.cnblogs.com/babietongtianta/p/43 ...
随机推荐
- 使用JSP处理用户注册和登陆
1. 这是一个JSP实例,由四个JSP页面组成,处理用户的注册和登陆信息2. 首先是login.jsp,代码如下:<html><center><form method=g ...
- asp.net MVC 中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction区别
@Html.Action:需要有对应的Action,并且Action方法有返回值.(注:处理完业务逻辑同时,也需要返回所需值) @{Html.RenderAction}:需要有对应的Action,Ac ...
- 介绍Google App Engine
Google App Engine是一个网络应用托管服务(web application hosting service).所谓网络应用(By web application),我们的意思的可以通过网 ...
- libvirt虚拟系统如何增加usb设备
之前干这些事情都是通过virt-manager来搞定的.不过由于这个图形界面不太方便,而且现在没法打开(具体原因不详,每次打开提示一些方法未实现什么的),所以试下用libvirt的命令virsh来搞定 ...
- 对JDK,JRE,JVM的理解
JAVA用到现在还是分不太清楚JDK,JRE,JVM这三者的区别与联系,一直都是模模糊糊的.所以今天整理下此中的关系. 简单说明:我们编写的.java文件经过JDK(JDK的bin目录下javac.e ...
- Hadoop应用开发实战案例 第1周
本课程的基础课程是,Hadoop数据分析平台课程.相信,能看我本博文的朋友,是有一定的基础了. 只是前个课程是讲解,这个课程是应用. 第一层是:数据源层,代表有生产线上的数据,比如关系型数据库orca ...
- homework-09
这次作业主要考察C++11的简单用法,个人感觉这样的练习对我这种编程能力比较差的非常有用,加深了对C++11的理解. Lambda的用法 计算“Hello World!”中 a.字母‘e’的个数 b. ...
- JavaScript,通过分析Array.prototype.push重新认识Array
在阅读ECMAScript的文档的时候,有注意到它说,数组的push方法其实不仅限于在数组中使用,专门留作通用方法.难道是说,在一些类数组的地方也可以使用?而哪些是和数组非常相像的呢,大家或许一下子就 ...
- Java transient、Volatile关键字
Volatile修饰的成员变量在每次被线程访问时,都强迫从主内存中重读该成员变量的值.而且,当成员变量发生变化时,强迫线程将变化值回写到主内存.这样在任何时刻,两个不同的线程总是看到某个成员变量的同一 ...
- Codeforces Round #250 (Div. 1) D. The Child and Sequence (线段树)
题目链接:http://codeforces.com/problemset/problem/438/D 给你n个数,m个操作,1操作是查询l到r之间的和,2操作是将l到r之间大于等于x的数xor于x, ...