Originally the brainchild of Brad Robinson.
PetaPoco is maintained and extended by Wade Baglin (@pleb) and Aaron Sherber (@asherber).
Read more about the v6 update
PetaPoco is available from: NuGet PetaPoco.Compiled
Master | Development | Nuget |
---|---|---|
For configuration documentation, code examples, and other general usage information, [read the docs]
- PetaPoco.SqlKata lets you use the powerful query builder SqlKata to build SQL queries for PetaPoco.
- StaTypPocoQueries.PetaPoco provides the ability to use some simple, strongly typed, Intellisensed LINQ expressions in your queries.
- PetaPoco.DBEntityGenerator lets you generate Pocos from your DB (T4 template replacement).
Nuget (Single file) | Nuget Core (+t4 templates) | Nuget Core Compiled (dll) |
---|---|---|
- Like Dapper, it's fast because it uses dynamic method generation (MSIL) to assign column values to properties
- Like Massive, it now also supports dynamic Expandos too
- Like ActiveRecord, it supports a close relationship between object and database table
- Like SubSonic, it supports generation of poco classes with T4 templates (V5 only)
- Like Massive, it's available as a single file that you easily add to any project or complied. (V5 only)
- Tiny, and absolutely no dependencies!
- Asychronous (aka async) or synchronous: the choice is yours. (V6)
- Works with strictly undecorated POCOs, or attributed almost-POCOs.
- Easy to configure, including fluent configuration out of the box.
- Helper methods for Insert/Delete/Update/Save and IsNew
- Paged requests automatically work out the 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. (V5)
- 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 is supported but does not have integration tests).
- Works under Net Standard 2.0, .NET 4.0/4.5+ or Mono 2.8 and later.
- Has Xunit unit tests.
- Has supported DBs integration tests.
- OpenSource (MIT License or Apache 2.0)
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.
PetaPoco welcomes input from the community. After all, what is a product without users? If you would 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.
PetaPoco is not just the effort of one person, but rather the combined effort of many. For those individuals who rise above and beyond, we have a special place to honour them.