They have been quite some changes to date & time handling too, some fixing concerns like https://stackoverflow.com/q/32679529/1178314. See https://nhibernate.jira.com/browse/NH-3919. This ticket has been used to tackle some other NHibernate types issues, its PR has many commits pointing to corresponding tickets. Among changes, the old default cutting of fractional seconds is gone. The type registration in dialects is now able of handling max precision for decimal types and max scale for date& time type, while previously it was treating the registered capacity always as related to type length/size. And a number of dialects were registering decimal by using the length parameter for specifying its scale, with a fixed precision (like decimal(19, %l)). This has been fixed too (decimal(%p, %s)).
There was an old behavior about cast which was limiting: hard cast to string(255) or decimal(19,5) in some circumstances, which were reported in some tickets (https://nhibernate.jira.com/browse/NH-3787). This is now configurable (https://nhibernate.jira.com/browse/NH-4088). But work is not fully done for all databases (https://nhibernate.jira.com/browse/NH-4087 ongoing), and in some cases the cast could be avoided (https://nhibernate.jira.com/browse/NH-3787 too). We also have switched from Jira to GitHub issues tracking. Jira not closed yet but issues should now be reported on GitHub. About 5.1, well, we currently are focusing on finishing 5.0 (doc to publish, caches, ...) and 5.0.1 (reported regressions), which will likely wait some more days in case of other regressions to be reported. Will see for 5.1 after that. Le lundi 16 octobre 2017 12:39:05 UTC+2, Ricardo Peres a écrit : > > Guys, I am looking at writing a blog post on some of the new features. Of > these, I would like to cover: > > - the new LINQ DML stuff > - the ability to query unloaded collections > - creating sessions with properties > - async methods > - changes related to ambient transactions > > Anything else noteworthy? When is 5.1 expected? > Thanks! > > RP > > > On Wednesday, October 11, 2017 at 9:34:29 AM UTC+1, Frédéric Delaporte > wrote: >> >> And of course, thanks to you Alexander for all the work you put yourself >> in it! >> >> Le mardi 10 octobre 2017 12:31:49 UTC+2, Alexander Zaytsev a écrit : >>> >>> NHibernate 5.0.0 is now released with 141 issues resolved. >>> >>> For a list of resolved issues, see the release notes: >>> https://github.com/nhibernate/nhibernate-core/blob/5.0.0/releasenotes.txt >>> >>> Binaries are available on NuGet and SourceForge: >>> https://sourceforge.net/projects/nhibernate/files/NHibernate/5.0.0/ >>> https://www.nuget.org/packages/NHibernate/5.0.0 >>> Highlights >>> >>> - IO bound methods have gained an async counterpart. Not intended >>> for parallelism, make sure to await each >>> call before further interacting with a session and its queries. >>> - Strongly typed DML operation (insert/update/delete) are now >>> available as Linq extensions on queryables. >>> - Entities collections can be queried with .AsQueryable() Linq >>> extension without being fully loaded. >>> - Reference documentation has been curated and completed, notably >>> with a Linq section. >>> http://nhibernate.info/doc/nhibernate-reference/index.html >>> >>> Known BREAKING CHANGES from NH4.1.1.GA to 5.0.0 >>> >>> NHibernate now targets .Net 4.6.1. >>> >>> Remotion.Linq and Antlr3 libraries are no more merged in the NHibernate >>> library, >>> and must be deployed along NHibernate library. (NuGet will reference >>> them.) >>> >>> Classes and members which were flagged as obsolete in the NHibernate 4.x >>> series have been dropped. >>> Prior to upgrading, fix any obsolete warning according to its message. >>> See NH-4075 and NH-3684 for a list. >>> Possible Breaking Changes >>> >>> - All members exposing some System.Data types have been changed for >>> the corresponding System.Data.Common >>> types. (IDbCommand => DbCommand, ...) >>> - The Date NHibernate type will no more replace by null values below >>> its base value (which was year 1753). >>> Its base value is now DateTime.MinValue. Its configuration parameter >>> is obsolete. >>> - NHibernate type DateTimeType, which is the default for a .Net >>> DateTime, does no longer cut fractional >>> seconds. Use DateTimeNoMsType if you wish to have fractional seconds >>> cut. It applies to its Local/Utc >>> counterparts too. >>> - LocalDateTimeType and UtcDateTimeType do no more accept being set >>> with a value having a non-matching kind, >>> they throw instead. >>> - DbTimestamp will now round the retrieved value according to >>> Dialect.TimestampResolutionInTicks. >>> - When an object typed property is mapped to a NHibernate timestamp, >>> setting an invalid object in the >>> property will now throw at flush instead of replacing it with >>> DateTime.Now. >>> - Decimal type registration now correctly handles maximal precision. >>> For most dialects, it is 28, matching >>> the .Net limit. Values in mappings above maximal precision will be >>> reduced to maximal precision. >>> - Default cast types do no more resolve string to 255 length and >>> decimal to its default precision/scale for >>> the dialect. They resolve to 4000 length string and (28, 10) >>> precision/scale decimals by default, and are >>> trimmed down according to dialect. Those defaults can be overridden >>> with query.default_cast_length, >>> query.default_cast_precision and query.default_cast_scale settings. >>> - Transaction scopes handling has undergone a major rework. See >>> NH-4011 for full details. >>> - More transaction promotion to distributed may occur if you use >>> the "flush on commit" feature with >>> transaction scopes. Explicitly flush your session instead. Ensure >>> it does not occur by disabling >>> transaction.use_connection_on_system_events setting. >>> - After transaction events no more allow using the connection >>> when they are raised from a scope >>> completion. >>> - Connection enlistment in an ambient transaction is now enforced >>> by NHibernate by default. >>> - The connection releasing is no more directly triggered by a >>> scope completion, but by later >>> interactions with the session. >>> - AdoNetWithDistributedTransactionFactory has been renamed >>> AdoNetWithSystemTransactionFactory. >>> - Subcriteria.UniqueResult for value types now return default(T) >>> when result is null, as was >>> already doing CriteriaImpl.UniqueResult. >>> - AliasToBeanResultTransformer property/field resolution logic has >>> changed for supporting members >>> which names differ only by case. See NH-3693 last comments for >>> details. >>> - Linq extension methods marked with attribute LinqExtensionMethod >>> will no more be evaluated >>> in-memory prior to query execution when they do not depend on query >>> results, but will always be >>> translated to their corresponding SQL call. This can be changed with >>> a parameter of the attribute. >>> - Linq Query methods are now native members of ISession and >>> IStatelessSession instead of being >>> extension methods. >>> - Linq provider now use Remotion.Linq v2, which may break Linq >>> provider extensions, mainly due to names >>> changes. See #568 >>> <https://github.com/nhibernate/nhibernate-core/pull/568> changes to >>> test files for examples. >>> - NHibernate Linq internals have undergone some minor changes which >>> may break custom Linq providers due >>> to method signature changes and additional methods to implement. >>> - IMapping interface has an additional Dialect member. >>> ISessionFactoryImplementor has lost it, since it >>> gains it back through IMapping. >>> - IDriver.ExpandQueryParameters and DriverBase.CloneParameter take >>> an additional argument. >>> - NullableType, its descendent (notably all PrimitiveType) and >>> IUserType value getters and setters now >>> take the session as an argument. This should mainly impact custom >>> types implementors. >>> - EmitUtil is now internal and has been cleaned of unused members. >>> - ContraintOrderedTableKeyColumnClosure has been renamed >>> ConstraintOrderedTableKeyColumnClosure. >>> - enabledFilter parameter has been removed from >>> IProjection.ToSqlString and ICriterion.ToSqlString methods. >>> - Proxy factory and proxy cache now use TypeInfo instead of >>> System.Type. This should be transparent for >>> most users. >>> - Exceptions which were based on ApplicationException are now based >>> on Exception: HibernateException, >>> ParserException and AssertionFailure. The logger factory which could >>> throw a bare ApplicationException >>> now throws an InstantiationException instead. >>> - ThreadSafeDictionary class has been removed. Use >>> System.Collections.Concurrent.ConcurrentDictionary >>> instead. >>> - Entity mode switching capability, which had never been fully >>> implemented, is dropped. >>> - BytecodeProviderImpl, intended for .Net Framework 1 and broken, is >>> dropped. >>> - Sessions concrete classes constructors have been changed. (It is >>> not expected for them to be used >>> directly.) >>> - Obsolete setting >>> interceptors.beforetransactioncompletion_ignore_exceptions is dropped. >>> - SQL Server 2008+ dialects now use datetime2 instead of datetime >>> for all date-time types, including >>> timestamp. This can be reverted with sql_types.keep_datetime setting. >>> - SQL Server 2008+ timestamp resolution is now 100ns in accordance >>> with datetime2 capabilities, down from >>> 10ms previously. This can be reverted with sql_types.keep_datetime >>> setting. >>> - Oracle 9g+ dialects now use timestamp(7) for all date time types, >>> instead of timestamp(4). >>> - Oracle 9g+ timestamp resolution is now 100ns in accordance with >>> timestamp(7) capabilities, down from >>> 100µs previously. >>> - Oracle: Hbm2dll will no-more choose N- prefixed types for typing >>> Unicode string columns by default. >>> This can be changed with oracle.use_n_prefixed_types_for_unicode >>> setting, which will furthermore >>> control DbCommand parameters typing accordingly. See NH-4062. >>> - SqlServerCe: the id generator "native" will now resolve as >>> table-hilo instead of identity. >>> - Firebird: timestamp resolution is now 1ms. >>> - PostgreSQL: if Npgsql v3 or later is used, time DbParameters will >>> be fetched as TimeSpan instead of >>> DateTime. >>> - DB2 & Oracle lite: decimal type registration was hardcoding >>> precision as 19 and was using length as >>> scale. It now uses precision and scale from mapping when specified, >>> and disregards length. >>> - Ingres & Sybase ASA: decimal type registration was hardcoding >>> precision as 18 and was using length as >>> scale. It now uses precision and scale from mapping when specified, >>> and disregards length. >>> - ODBC: String parameter length will no more be specified by the >>> OdbcDriver. >>> >>> >>> -- >>> >>> Huge thanks to everyone involved in this release, especially to Frédéric >>> Delaporte, Oskar Berggren, Boštjan Markežič (maca88), and Nathan Brown for >>> their invaluable help. >>> >>> Special thanks to Boštjan for awesome AsyncGenerator without which this >>> release would not be possible. >>> >>> Best Regards, >>> Alexander >>> >> -- --- You received this message because you are subscribed to the Google Groups "nhibernate-development" group. To unsubscribe from this group and stop receiving emails from it, send an email to nhibernate-development+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.