MicroLite 6.2.0 has been released on NuGet.
The 2 main changes in this release are:
- The session re-uses the same command during its lifecycle so multiple operations via a session are more efficient – especially multiple operations of the same type (e.g. multiple inserts).
- Improved the handling of
TimeSpan– beware that this is a breaking change (see below)
Prior to MicroLite 6.2, MicroLite was able to map a
TimeSpan to a MS SQL
Time column – however it turns out there are a number of problems with the
- It has a maximum value of
24:00:00since it is actually designed to represent the time of day
- It cannot be used in some aggregate functions such as
AVERAGEwhich makes summarising data diffucult
In order to mitigate these issues, MicroLite 6.2 now maps
TimeSpan to a
BIGINT by persisting the tick count of the
TimeSpan – this has the side effect of also enabling
TimeSpan to be used by any database supported by MicroLite.
If you are updating to MicroLite 6.2 and you are currently using
TIME you have 2 options:
1) – Update your database schema to use a
BIGINT (add a new column, populate it by casting the time as the tick count, remove the old column).
2) – Configure MicroLite 6.2 to behave like MicroLite 6.1:
// In startup code (before calling Configure.Fluently()...): // 1. Remove the new TimeSpanTypeConverter: var timeSpanTypeConverter = TypeConverter.Converters.OfType<TimeSpanTypeConverter>().Single(); TypeConverter.Converters.Remove(timeSpanTypeConverter); // 2. Reset the DbType mapping for TimeSpan: TypeConverter.RegisterTypeMapping(typeof(TimeSpan), System.Data.DbType.Time); TypeConverter.RegisterTypeMapping(typeof(TimeSpan?), System.Data.DbType.Time);