Skip to content
.NET micro ORM done right.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
Properties Version bump to 2.0. Jan 15, 2019
.gitattributes Add .gitignore and .gitattributes. Dec 24, 2016
QueryInfo.cs Added missing FastStringComparer. May 27, 2019 Update Jan 11, 2019
SecurityDriven.TinyORM.sln Tests project added. Apr 20, 2017


Simple, fast, and secure micro ORM for .NET.

TinyORM by Stan Drapkin [sdrapkin at sdprime dot com]

Documentation: wiki


  1. Focused on SQL Server (any SqlClient-based db engine). Azure SQL is supported as well.
  2. Intuitive, tiny, simple API. This is usually the hardest part for libraries to get right.
  3. Does not obscure or reinvent T-SQL. If you prefer APIs that hide T-SQL incompetence, look elsewhere.
  4. Very fast. As fast as competition (Dapper, OrmLite, LLBLGen, EF Core, etc. benchmarks).
  5. Seamlessly transactional and safe. Transactions are not merely supported - they are the default.
    • XACT_ABORT=ON (automatic transaction rollback on runtime T-SQL errors).
    • Custom transaction scopes are declared via standard TransactionScope instance (created via TinyORM.DbContext.CreateTransactionScope() factory).
  6. Transparent connection management. One less thing to worry about and screw up. Never think about connections again.
  7. Task-based async API (ie. the API). All calls are buffered (focus on safety and fast connection release).
  8. POCOs or anonymous objects are fine. No inheritance, interface, or attribute requirements.
  9. Returns dynamic entities which can be consumed directly, or projected to statically-typed objects (fast!).
    • Either strict (perfect-match) or relaxed (best-effort) projection of dynamic to statically-typed objects.
  10. Full parameterization, with parameter list expansion (ex. WHERE Id IN (@IdList)). This also helps prevent SQL injection.
    • CHAR, VARCHAR, NCHAR, NVARCHAR support for string parameters.
  11. Single or multiple Result Sets.
  12. Snapshots provide change-tracking, with UPDATE T-SQL generation for partial updates.
  13. Intelligent batched *bulk* command sequences via QueryBatch (not just for INSERT - for all CREATE/UPDATE/DELETE/MERGE commands).
  14. Streaming data-out support (ex. streaming out BLOBs/files).
  15. Auditing
    • Caller identity tracking (which user made the call?).
    • Callsite tracking (which source code filename, method, and line# made the call?).
  16. Helpers for CREATE, UPDATE, DELETE, and UPSERT T-SQL generation.
  17. SequentialGuid generator for fragmentation-free, unique, unguessable, code-generated clustered uniqueidentifier indexes.
  18. c# 7.0 in safe mode. Compiled any cpu for .NET 4.5.2+.
  19. Tiny codebase. Tiny ~45k .dll.
  20. TinyORM on NuGet (Install-Package TinyORM).
  21. MS-PL (Microsoft Public) license. If MS-PL does not suit you, contact me.

If you are serious about SQL Server, give TinyORM a try (even if you're a Dapper fan).

Simple TinyORM query

var db = DbContext.Create(connString);
var query = await db.QueryAsync("select [Answer] = @a + @b", new { @a = 123, @b = 2 });

Console.WriteLine(query.First().Answer); // prints "125"

static string connString = "Data Source=.\\SQL2012; Initial Catalog=tempdb; Integrated Security=True;";

Nature graphic by Freepik is licensed under CC BY 3.0.

You can’t perform that action at this time.