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.