Skip to content
Adam Schroder edited this page Dec 29, 2023 · 22 revisions

6.0.0

  • 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

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<T> for composite keys

2.9.103

  • Fix LINQ queries with char columns
  • SqlBuilder will put brackets around each call to Where()
  • Add FetchBy back to IDatabase
  • Set AnsiString in LINQ correctly so queries on a varchar column will use indexes
  • Save<T> method now takes T parameter not object
  • Add Async methods for querying, updates, inserts and deletes
  • PocoDataFactory only created once if not set manually
  • Ability to map objects in non-generic way using IEnumerable<object> Query(Type type, ... method

2.7.93

  • Add support for timestamp column
  • Add base62 encoder to pass timestamp byte[] around
  • Modify orderby RegEx to support nested subquery filters (much faster too)
  • Allow named where statements in Sql Builder (/**where(first)**/ sb.Where("first", "name = @0", "John"))
  • Remove FetchBy (use Query<T> now)
  • Add Distinct to QueryProvider which can do a distinct projection
  • Cache config per DatabaseFactory
  • Fix enum parameters for in clauses
  • Allow Dictionary<string, object> to be passed as first parameter for dynamic parameters (@andersjonsson)

2.6.88

  • Fix issue with UpdateMany not finding the set columns
  • Allow SqlParameters to be used in SqlBulkCopy
  • Numerous LINQ fixes (!Contains, !x.Name.StartsWith, Substring, Projections, Constant Boolean Expressions)

2.5.77

  • Add Firebird support
  • Improve memory usage performance (@Shandem)
  • Set MySql default transaction isolation level to IsolationLevel.RepeatableRead

2.4.72

  • Move check for dynamic object to top of IsNew method
  • Run mapper through primary key columns

2.4.71

  • Make CreateCommand public (#116)
  • Fix nullable enums in LINQ queries (#115)

2.4.69

  • Add shortcut database method to update snapshotted pocos
  • Fix FormatCommand with Null values
  • Fix for issue #106
  • Make SqlBulkCopyOptions available to BulkInsert helper
  • Snapshotter supports private fields
  • Add support for custom mapper in SqlBulkInsert
  • Make dynamic queries use PocoExpando which is case insensitive
  • Fix paging regex and include Version column on pococolumn
  • Snapshot update columns with private setter
  • Add Alias and Computed Attributes
  • Remove the need to have property on Poco with AutoJoin
  • Fix inherited type properties to emit the correct SQL
  • Fix paging for non Sql Server and Oracle
  • Optimize Exists to use count(*)
  • Fix Paged queries in Postgres and add TableInfo to PocoColumn
  • Fix OrderBy Descending
  • Create Tests for Linq Provider
  • Support self referencing joins to one level
  • Add alias on TableInfo
  • Cleanup building of sql
  • Initial work on aliases
  • Fix Enum parameters for columns stored as strings
  • Add "returning" primary key
  • Add Firebird database type
  • Add multi-poco paging to interface
  • Add multi-poco paging support
  • Allow ColumnInfo to store Ignored columns
  • Allow HasValue for nullable type in Where query
  • Allow private constructor with snapshotter
  • Allow SqlBuilder to make token replacement mandatory
  • Make Transaction inherit from an interface
  • Make In take an IEnumerable
  • Add exception when mapping to poco with no parameterless constructor
  • Fix for DbType.Time not working for SqlServer
  • Fix Guid parameters
  • Fix provider name for SQLite
  • Allow sql expressions to be a bit more complex

2.2.40

  • Handle error when nested object is null and nested nested object trying to be mapped to it
  • Change Connection closing to only leave open if explicitly opened, otherise it will be closed for every command
  • Remove ForceDateTimeToUtc from Database and moved to PocoColumn
  • Make all On* methods protected
  • Add Apache License V2
  • Enable the SqlBulk helper to support glimpse connection and transactions
  • Fix for where with empty list for in clause
  • Fix bug with UpdateWhere doing a delete
  • Fix underscore mapping and extensions
  • Updated Update expression to use converter
  • Added ability to update and delete with strong types
  • Ensure DbColumnType is set with overrides
  • Don't map to a property with only a getter
  • Fix for mapping private properties on base types

2.1.30

  • Allow mappings to be inherited
  • Support new Oracle client (@smlynch)
  • Fix closed connection when using bulk insert (@dustinhorne)
  • Fix oracle paging (@smlynch)

2.1.27

  • Insert, Update and Delete methods have been made virtual
  • Conventions now use MemberInfo to support mapping to fields
  • Fix OneToMany() bug when no many results returned
  • Fix nullable enums
  • Fix when mapping to a nullable

2.1.24-beta

  • Fix invalid cast when destination type is nullable

2.1.21-beta

  • Ability to map fields in addition to properties
  • Don't map public readonly fields
  • Fix bug with SqlBuilder and parameters
  • Make paging more generic

2.0.18

  • Only nested objects are mapped if at least one column is not null, otherwise null object is returned
  • Fix null connection for SqlExpressions

2.0.15

  • Allow dictionary to be passed as primary keys for composite keys
  • Add FetchBy<> and FetchWhere<> so that basic Linq queries are possible
  • DatabaseFactory is no longer static and must be set per instance of Database created.
  • Added Insert/Update/Delete hooks