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.

Reply via email to