Release 5.3.0
fredericDelaporte
released this
19 Jul 20:02
·
488 commits
to master
since this release
NHibernate 5.3.0 is now released.
For a list of resolved issues & pull requests, see the milestone or the release notes.
Binaries are available on NuGet and SourceForge:
https://sourceforge.net/projects/nhibernate/files/NHibernate/5.3.0/
https://www.nuget.org/packages/NHibernate/5.3.0
220 issues were resolved in this release.
Possible Breaking Changes
- A distributed cache may hold conflicting timestamps after upgrade for as much as twelve hours. Consider flushing a distributed cache after upgrade to avoid any issue. Do not share a distributed cache with applications using an earlier version of NHibernate.
- The counter id generator may generate conflicting ids for as much as twelve hours after upgrade.
update
anddelete
statements will now take into account any enabled filter on the entities they update or delete, while previously they were ignoring them. (insert
statements will also take them into account, but previously they were failing instead of ignoring enabled filters.)- ISession.Persist will no more trigger immediate generation of identifier.
- Bags will no more be loaded with "null" entities, they will be filtered out.
- Setting the value of an unitialized lazy property will no more trigger loading of all the lazy properties of the entity.
- If an unitialized lazy property has got its value set, without any other subsequent lazy property load on the entity, a dynamic update will occur on flush, even if the entity has dynamic updates disabled. This update will occur even if the set value is identical to the currently persisted property value.
- Assigning an uninitialized proxy to a
no-proxy
property will no more trigger the proxy initialization. Moreover, reading the property afterwards will no more unwrap the assigned proxy, but will yield it. - A class having an explicitly implemented interface declaring a member with the same name than the class id will have its proxies trigger a lazy load if the interface "id" is accessed.
- SQLite: in order to avoid a floating point division bug losing the fractional part, decimal are now stored as
REAL
instead ofNUMERIC
. Both are binary floating point types, excepted thatNUMERIC
stores integral values asINTEGER
. This change may cause big integral decimal values to lose more precision in SQLite. - Custom dialects used for databases that do not support cross join will have to override
SupportsCrossJoin
property and set it tofalse
. VisitorParameters.ConstantToParameterMap
may contain the same parameter for multiple constant expressions.ICache
caches yielded by the session factory will beCacheBase
wrappers around the cache actually provided by the cache provider, if it was not deriving fromCacheBase
.