Master | Development | Nuget | Nuget Core | Nuget Core Compiled | Release Notifications |
---|---|---|---|---|---|
Originally the brainchild of Brad Robinson,
- 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
- 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
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.
For configuration, code examples and other general information See the docs
PetaPoco is available from:
- NuGet Peta - https://www.nuget.org/packages/PetaPoco/ - A single file include with T4 text templates to automatically build your pocos for you.
- NuGet Peta Core - https://www.nuget.org/packages/PetaPoco.Core/ - A single file include.
- NuGet Peta Core Compiled - https://www.nuget.org/packages/PetaPoco.Core.Compiled/ - A compiled version which your project references.
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.
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.