Official PetaPoco, A tiny ORM-ish thing for your POCO's
C#
Failed to load latest commit information.
Media Add logo size 256 Dec 12, 2015
Nuget Releases development changes (#316) Jul 29, 2016
Output Updates ignore file and adds placeholder file Dec 5, 2015
PetaPacked Updates project files and paths in prep for automated builds Dec 5, 2015
PetaPoco.Cs.Joiner Updates PetaPoco single file to suppress a few common warnings #245 Jan 30, 2016
PetaPoco.Tests.Dep Adds missing file Dec 7, 2015
PetaPoco.Tests.Docker Updates docker to Windows beta version (+1 squashed commits) May 26, 2016
PetaPoco.Tests.Integration.SingleFile Merge branch 'development' of https://github.com/CollaboratingPlatypu… Dec 28, 2015
PetaPoco.Tests.Integration.x86 Adds integration tests for PR #288 (Fixing byte based enums) May 27, 2016
PetaPoco.Tests.Integration Adds documentation for Updates Jul 31, 2016
PetaPoco.Tests.Unit Unwraps db provide factories before matching. Addresses #314 Aug 6, 2016
PetaPoco Removes extra line at end of TT file #331 Aug 15, 2016
Tools Removes files that shouldn't be included in the source Dec 5, 2015
.gitignore Adds missing file Dec 7, 2015
LICENSE.txt Moved readme/license to root folder Mar 24, 2011
PetaPoco.sln Adds support for MS Access databases Jan 30, 2016
PetaPoco.sln.DotSettings Releases development changes (#306) Jul 20, 2016
README.markdown Fixes build badges in readme Apr 13, 2016
appveyor.yml Forces a build of PetaPoco single file using tools version 4.0 Jan 10, 2016
contributing.md Update contributing.md Dec 16, 2015
honourRoll.md Adds @LankyPaddy to the honour roll May 26, 2016

README.markdown

Master Development Nuget Nuget Core Nuget Core Compiled Release Notifications
Build status Build status Nuget Downloads Nuget Downloads core Nuget Downloads core Rager Releases

PetaPoco Logo

Welcome to the official PetaPoco repository

Originally the brainchild of Brad Robinson,

PetaPoco is a tiny, fast, single-file micro-ORM for .NET and Mono

  • Like Dapper, it's fast because it uses dynamic method generation (MSIL) to assign column values to properties
  • Like Massive it's available as single file that you easily add to any project or complied.
  • Like Massive, it now also supports dynamic Expandos too - read more
  • Unlike Massive it works with strongly typed POCO's
  • Like ActiveRecord, it supports a close relationship between object and database table
  • Like SubSonic, it supports generation of poco classes with T4 templates

Features at a Glance

  • Tiny, and absolutely no dependencies!
  • Works with strictly undecorated POCOs, or attributed almost-POCOs.
  • Easy to configure and includes fluent configuration out of the box.
  • Helper methods for Insert/Delete/Update/Save and IsNew
  • Paged requests automatically work out total record count and fetch a specific page.
  • Easy transaction support.
  • Better parameter replacement support, including grabbing named parameters from object properties.
  • Great performance by eliminating Linq and fast property assignment with DynamicMethod generation.
  • The query language is good ole SQL.
  • Includes a low friction SQL builder class that makes writing inline SQL much easier.
  • Includes T4 templates to automatically generate POCO classes for you.
  • Hooks for logging exceptions, installing value converters and mapping columns to properties without attributes.
  • Works with SQL Server, SQL Server CE, MS Access, SQLite, MySQL, MariaDB, Firebird, and PostgreSQL. (Oracle supported but does not have integration tests).
  • Works under .NET 4.0/4.5/4.6 or Mono 2.8 and later.
  • Has Xunit unit tests.
  • Has supported DBs integration tests.
  • OpenSource (Apache License)
  • All of this in about 1,500 lines of code

Super easy use and configuration

Save an entity

    db.Save(article);
    db.Save(new Article { Title = "Super easy to use PetaPoco" });
    db.Save("Articles", "Id", { Title = "Super easy to use PetaPoco", Id = Guid.New() });

Get an entity

    var article = db.Single<Article>(123);
    var article = db.Single<Article>("WHERE ArticleKey = @0", "ART-123");

Delete an entity

    db.Delete(article);
    db.Delete<Article>(123);
    db.Delete("Articles", "Id", 123);
    db.Delete("Articles", "ArticleKey", "ART-123");

Plus much much more.

Documentation

For configuration, code examples and other general information See the docs

Download

PetaPoco is available from:

Contributing

PetaPoco welcomes input from the community. After all, what is a product without users? If you’d like to contribute, please take the time to read the contribution guide. We would also suggest you have a quick read of Contributing to Open Source on GitHub.

Contributions Honour Roll

A product like PetaPoco isn't the effort of one person, but rather a combined effort of many. For those individuals who rise above and beyond we have a special place to honour them.