Skip to content
Adam Schroder edited this page Feb 22, 2026 · 24 revisions

6.2.0

  • Update System.Data.SqlClient
  • Implementation for ToProjectedPage()
  • Add support for running tests against SqlServer
  • Add test for Including ComplexMapping
  • Fix issue with Include not selecting ComplexMapping columns
  • Fix NotSupportedException with empty inline arrays in Contains expressions
  • Add .NET10 target #722
  • Add support for OrderedDictionary

6.0.0

  • IAsyncDatabase will now use Async all the way down
  • Async cancellation tokens through out
  • Async Open/Close/BeginTran/AbortTran for netstandard 2.1 & net8
  • NPoco.Abstractions package
  • Only change data type for rows on their first iteration #684
  • Add changeable default ForceToUtc flag on PocoColumn #655
  • Allow certain types to not participate in IEnumerable expansion #636
  • Add support for DateOnly
  • Wrap WhereSql with brackets
  • Update ValueTupleRowMapper to cache the sql query types also
  • Allow ability to OpenSharedConnection lazily but not auto close
  • Add DisposeAsync
  • Implement AlterStatementHooks
  • Fix format command

5.4.0

  • Add support for Mappers in Linq queries for Where clauses

5.0.0

https://github.com/schotime/NPoco/wiki/Upgrading-to-V5

  • Add exact column name matching which doesn't remove underscores to match column names #351
  • Adds SQL Server command formatting for easy copy & paste #429
  • Escape table name for sql bulk copy #451
  • Use MemberInfoKey in BulkInsert to support complex properties #609
  • Add ability to have multi parameter less constructors and default values will be provided to initialise #602
  • Add missing where expression to First method #598
  • Create netstandard2.1 targets
  • Fix async and parent child mappings #569
  • Implement FetchMultipleAsync and change to using ValueTuples #460
  • Support private properties #414
  • Implement SaveAsync methods #415
  • Map strings to Guids automatically
  • Fix custom mapper being called twice #439
  • Use aliases for queries if they exist #557
  • Infer the Include property based on the generic type parameter for one-to-one and foreign references
  • Adding BulkCopyTimeout parameter to BulkInsert #563
  • Add Linq support for DateTime.Year etc #484
  • Fix parameter escaping for MySql as per #492
  • Add concurrency checking to deletes #567
  • Ability to use Tuples as parameters using the @item1, @Item2 etc names
  • Add ValueTupleMapper #358 from @asztal
  • Refactor IAsyncDatabase instances and implement BulkInsertAsync
  • Add transient error retry hooks for SQL Server
  • Implement IAsyncEnumerables

4.0.3

  • Add missing where expression to First method #598

4.0.2

  • Add support for KeepIdentity in Bulk Insert

4.0.1

  • Add support for .netstandard 2.0
  • Update fastJSON to 2.1.34
  • Add new IAsyncDatabase interface
  • Add new Async methods
  • Add UpdateBatch and UpdateBatchAsync
  • Allow AnsiString value to be null fixes #539
  • Add comments for SqlBuilder.AddClause method
  • Add INeedDatabase interface for query providers so extension methods can be done
  • Fix bug where hooks weren't getting called for async inserts
  • Update SqlBuilder to ReuseParameters if required
  • Add support for Trim(), TrimStart() and TrimEnd()
  • Rename Sql Where overloads to WhereSql to avoid intellisense conflicts
  • Throw error if setting AutoIncrement to true when PrimaryKey is a composite key
  • Fixed exception when assigning value to a nullable primary key #404
  • Escape Firebird identifiers using double quotes
  • Add validation for page and itemsPerPage variables #456

3.9.4

  • Add support for nested dictionary mapping

3.9.3

  • Allow chained where clauses in linq provider. fixes #447

3.9.2

  • Fix SqlBuilder with multiple clauses

3.9.1

  • Fix issue when combining a linq where with a sql string where. fixes #428

3.9.0

  • Add async methods for First, FirstOrDefault, Single and SingleOrDefault. fixes #406
  • Update System.Data.SqlClient to 4.4.0. fixes #425

3.8.0

  • Add Distinct Async #400
  • Support where statements in VB.net #408

3.7.2

  • Fix where clauses in linq statements fixes #409

3.7.1

  • Fix conversion bug #407

3.7.0

  • Add extra UpdateAsync method for fields to IDatabase interface. fixes #389
  • Add bitwise support in linq expressions. fixes #384
  • Improve handling of multiple attributes. #376
  • FluentMappingOverrides should override complex prefix. Fixes #388
  • Ensure the async helper methods are awaited. Fixes #361
  • Implement ObjectValue as a concept (wiki to come)
  • Fix parameter reuse to include IN statements. fixes #405

3.6.0

  • Fix mapping to structs
  • Fix ForceToUtc on attribute mapping to be true by default
  • Add extra UpdateAsync method for fields to IDatabase interface #389
  • Add bitwise support in linq expressions. fixes #384
  • Improve handling of multiple attributes. #376
  • FluentMappingOverrides should override complex prefix. Fixes #388

3.5.1

  • Make AddTypeMap public
  • ToListAsync with IncludeMany now fixed
  • Fix ParameterHelper to reuse parameters if they were reused in original query
  • Support the nullable HasValue when used with another binary expression
  • Rename variable reader to values on delegate
  • Fix 'in' query with ParameterHelper when list is empty
  • Mapping perf: Use GetValues once per row rather than GetValue each per field.

3.4.1

  • Change FastJsonColumnSerializer to render a Guid as a string by default
  • Add CommandType as a parameter to Execute and ExecuteScalar
  • Remove DbFactoryProvider overload when passing in a raw DbConnection
  • Upgrade to .net core 1.0
  • Checks if the column starts with "npoco_" case insensitive. (#298) (@imasm)
  • Fix Async support in Firebird (#297)

3.3

  • Add ability to insert base/abstract base class
  • Ensure value type fields can be mapped to
  • Do not include Result columns when using include in the query provider
  • Add constructor overloads to SerializedColumn attribute for column name
  • Implement SqlOfTContext (@zpqrtbnk)
  • Update to .NET Core RC2

3.2

  • Add separate NPoco.JsonNet package and use fastJSON internally by default
  • Fix issue with using First() or FirstOrDefault() in Include statement
  • Support Npgsql 3.x with parameter names
  • Add XML comments to IDatabase
  • Add support to map to "get" only properties in c# 6

3.1

  • Add JSON.NET internally for serialized column

3.0

  • Breaking changes and more info listed: Version 3
  • Many internals rewritten
  • Initial work to support .NET Core
  • Add interceptors instead of having to use inheritance

2.10.11

  • Fix Exists call when using composite keys
  • Allow SQL Server to use output instead of scope_identity(). Property on SqlServerDatabaseType.
  • Fix FetchMultiple after mapping to weak types broke it.

2.10.9

  • Paging Regex supports more cases
  • Fix snapshotter bug with nested objects
  • SingleById should ignore EnableAutoSelect setting
  • EnumMapper now throws a useful exception to indicate something went wrong
  • Enums will automatically be mapped to strings if the column type is set to string [ColumnType(typeof(string))]
  • Add missing Version overload to fluent config builder
  • Fix IsNew for composite keys

2.9.103