PetaPoco轻量级ORM框架

摘要:
PetaPoco是一个开源的轻量级ORM,足够小,足够快。单个文件在GitHub 1377星上很受欢迎。几年来,作者一直在更新当前版本6.0.317-Netstandard2.0(也支持.netcore和.netframework 4.0+),还可以下载单独的平台版本github:https://github.com/CollaboratingPlatypus/PetaPoco像Dapper一样,足够快

PetaPoco 是一个开源轻量级ORM,够小,够快,单文件

  在GitHub上有很高的人气 1377星,几年来作者一直在更新

  当前版本6.0.317 - Netstandard 2.0(同时支持.net core、.net framework4.0+),也可下载单独的平台版本

  github: https://github.com/CollaboratingPlatypus/PetaPoco

  • 像Dapper 够快是因为使用dynamic生成分配列值和属性
  • 像Massive 只有一个文件,很容易添加到任何项目的编译
  • 像Massive  支持dynamic Expandos
  • 不像Massive 不使用强类型POCO's
  • 像ActiveRecord 支持对象和数据库表之间的关系
  • 像SubSonic 支持使用T4模板生成poco类

功能特点

  • 够小,完全没有任何依赖
  • 配置简单
  • 包含Insert/Delete/Update/Save and IsNew方法助手
  • 根据请求自动分页,可以指定输出记录总数和指定页码
  • 支持事务
  • 更好的参数替换支持,抓取对象属性作为命名参数
  • 优秀的性能,通过去除Linq使用Dynamic方法进行属性赋值
  • 使得编写内联SQL SQL builder类更加容易
  • 包含T4模板,可以快速生成Model类
  • 方便扩展异常日志
  • 支持SQL Server, SQL Server CE, MS Access, SQLite, MySQL, MariaDB, Firebird, PostgreSQL (支持Oracle但没有做集成测试).
  • 支持Net Standard 2.0, .NET 4.0/4.5+ or Mono 2.8 及以上
  • 有Xunit单元测试
  • 有各种数据库的集成测试
  • 开源

 1.添加Nugit引用,搜索(PetaPoco)

    PetaPoco轻量级ORM框架第1张

  此处下载的是第一个,会创建以下内容,所说的单文件就是只有PetaPoco.cs一个文件,项目中也可只保留此文件;Generated文件夹存放的是T4模板,用于生成实体类,如不需要可以删除

  PetaPoco轻量级ORM框架第2张

2.配置数据库连接,根据T4模板生成Model类,如不需要则可省略此步

<add name="SqlServer" connectionString="Data Source=.;uid=sa;pwd=we;database=JD;" providerName="System.Data.SqlClient"/>

    PetaPoco轻量级ORM框架第3张

    PetaPoco轻量级ORM框架第4张

3.保存后,会生成Database.cs文件内容如下:

    PetaPoco轻量级ORM框架第5张

4.如果数据库表有新增或修改字段,执行以下操作后,会自动生成相应的实体类。

    PetaPoco轻量级ORM框架第6张

 3.实操:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PetaPocoDemo
{
    class Program
    {
        static void Main(string[] args)
        { 
            Person p1 = Db.Record<Person>.SingleOrDefault(1);   //查询ID=1的记录
            Db.Record<Person>.Delete(2);                        //删除ID=2的记录


            Person person = new Person { Name = "曹操", Sex = "", Age = 500 };
            var db = Db.GetInstance();

            db.Execute("truncate table person");

            //保存一个实体
            db.Save(person);
            db.Save(new Person { Name = "孙悟空" });
            db.Save(new Person { Name = "孙悟空" });
            db.Save("Person", "ID", new { Name = "张天天", ID = 3 }); //save根据主键决定是新增还是修改

            //查询一个实体
            person = db.Single<Person>(1);
            person = db.Single<Person>("where id=2");

            //删除一个实体
            db.Delete(person);
            db.Delete<Person>(1);
            db.Delete<Person>("where name='张天天'");

        }
    }
}
CREATE TABLE [dbo].[Person](
    [ID] [INT] IDENTITY(1,1) NOT NULL,
    [Name] [VARCHAR](50) NULL,
    [Sex] [VARCHAR](50) NULL,
    [Age] [INT] NULL,
    [AddTime] [DATETIME] NULL,
 CONSTRAINT [PK_Person] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

免责声明:文章转载自《PetaPoco轻量级ORM框架》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【转】C#使用PrintDocument打印 多页 打印预览tomcat启动报错 ERROR o.a.catalina.session.StandardManager 182下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MiniDao (轻量级JAVA持久层,Hibernate完美助手)

MiniDao (轻量级JAVA持久层,Hibernate完美助手) 当前最新版本: 1.6.2 (发布日期:20180309) MiniDao产生的初衷? 采用Hibernate的J2EE项目都有一个痛病,针对复杂业务SQL,hibernate能力不足,SQL不好优化也无法分离。 这个时候大家就想到集成mybatis,但是一个项目既用hibernate又...

值得推荐的C/C++框架和库 (真的很强大)

  值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。 下载链接:http...

Feature.js-轻量级浏览器特性检测JavaScript库插件

简要教程 Feature.js是一款轻量级的浏览器特性检测JavaScript库插件。该插件运行速度快,使用简单,文件只有1kb大小。通过Feature.js你可以检测客户浏览器是否支持某些特性,并针对这些特性编写代码。 Feature.js会自动在页面初始化时进行加载,但是它不会自动进行特性检测,直到你在代码中调用它时才会进行指定特性的检测。 通过Fea...

Django ORM相关操作

Django ORM相关操作 PythonDjangoORM 在Python脚本中调用Django环境 很多情况下,在做测试的时候需要在Python脚本进行,此时若想成功运行需要导入Django环境配置,否则运行不成功。 import os if __name__ == '__main__': # 导入配置环境,记不住就去manage...

轻量级ORM框架 第一篇:Dapper

为什么选择Dapper,性能优越,各大网站的对比图,在超过500次poco serialization的过程中所表现的性能,Dapper是第二名 支持多数据库的本质是因为Dapper是对IDBConnection接口进行了方法扩展,比如你看到的SqlMapper.cs,一旦你这样做了,我们也知道, SqlConnection,MysqlConnectio...

71款开源项目

71款开源项目 百度,一家让人既爱又恨的企业,血友吧贴吧被卖,魏则西事件的持续发酵,一时间将百度推到了舆论的风口浪尖上。是非对错,我们在这里也不多做评判,本文呢为大家整理了百度开源的70+项目,看看有没有感兴趣的。本文内容综合整理自oschina、github。 1. JavaScript图表库 ECharts ECharts开源来自百度商业前端数据可视化...