Releases: nhibernate/nhibernate-core
Release 5.0.6
NHibernate 5.0.6 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.0.6/
https://www.nuget.org/packages/NHibernate/5.0.6
Release 4.1.2.GA
NHibernate 4.1.2.GA 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/4.1.2.GA/
https://www.nuget.org/packages/NHibernate/4.1.2.4000
Release 5.0.5
NHibernate 5.0.5 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.0.5/
https://www.nuget.org/packages/NHibernate/5.0.5
Release 5.0.4
NHibernate 5.0.4 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.0.4/
https://www.nuget.org/packages/NHibernate/5.0.4
Release 5.1.1
NHibernate 5.1.1 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.1.1/
https://www.nuget.org/packages/NHibernate/5.1.1
Release 5.1.0
NHibernate 5.1.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.1.0/
https://www.nuget.org/packages/NHibernate/5.1.0
Highlights
- NHibernate has gained two new target frameworks: .Net Core 2.0 and .Net Standard 2.0. NHibernate NuGet package provides them, along with the .Net framework 4.6.1 build.
For these new frameworks, some additional specificities or limitations apply:- Binary serialization is not supported - the user shall implement serialization surrogates for System.Type, FieldInfo, PropertyInfo, MethodInfo, ConstructorInfo, Delegate, etc.
- SqlClient, Odbc, Oledb drivers are converted to ReflectionBasedDriver to avoid the extra dependencies.
- CallSessionContext uses a static AsyncLocal field to mimic the CallContext behavior.
- System transactions (transaction scopes) are untested, due to the lack of data providers supporting them.
- 114 issues were resolved in this release.
Possible Breaking Changes
- Since Ingres9Dialect is now supporting sequences, the enhanced-sequence identifier generator will default to using a sequence instead of a table. Revert to previous behavior by using its force_table_use parameter.
- Some overridable methods of the Dialect base class and of MsSql2000Dialect have been obsoleted in favor of new methods. Dialects implementors need to override the replacing methods if they were overriding the obsolete ones, which are:
- Dialect.GetIfNotExistsCreateConstraint(Table table, string name), replaced by GetIfNotExistsCreateConstraint(string catalog, string schema, string table, string name).
- Dialect.GetIfNotExistsCreateConstraintEnd(Table table, string name), replaced by GetIfNotExistsCreateConstraintEnd(string catalog, string schema, string table, string name).
- Dialect.GetIfExistsDropConstraint(Table table, string name), replaced by GetIfExistsDropConstraint(string catalog, string schema, string table, string name).
- Dialect.GetIfExistsDropConstraintEnd(Table table, string name), replaced by GetIfExistsDropConstraintEnd(string catalog, string schema, string table, string name).
- MsSql2000Dialect.GetSelectExistingObject(string name, Table table), replaced by GetSelectExistingObject(string catalog, string schema, string table, string name).
Release 5.0.3
NHibernate 5.0.3 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.0.3/
https://www.nuget.org/packages/NHibernate/5.0.3
Release 5.0.2
NHibernate 5.0.2 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.0.2/
https://www.nuget.org/packages/NHibernate/5.0.2
Release 5.0.1
NHibernate 5.0.1 is now released with 13 issues resolved.
For a list of resolved issues, see milestone's issues. See the milestone or the release notes for viewing the pull requests too.
Binaries are available on NuGet and SourceForge:
https://sourceforge.net/projects/nhibernate/files/NHibernate/5.0.1/
https://www.nuget.org/packages/NHibernate/5.0.1
Release 5.0.0
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.
- Future queries with data provider not actually supporting them (not supporting mutliple queries in a single SQL command) are no more immediately executed at the .Future call. They are executed only when directly enumerated or when their IFutureEnumerable.GetEnumerable method is called. (This aligns them with the behavior of FutureValue.)
- Dialects are now configurable. If you instantiate a dialect directly, make sure you call its Configure method, with as argument the properties of a NHibernate Configuration object. You may use instead Dialect.GetDialect methods, which configure the dialect before returning it.
- 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_prepare 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 inequality implementation has been changed for supporting null, meaning that a "a != b" expression will now be considered matching if one side is null, while previously due to SQL null semantic it was considered non-matching. See NH-3100.
- 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 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.