|
1 |
| -Build 5.0.3 |
| 1 | +Build 5.1.0 |
| 2 | +============================= |
| 3 | + |
| 4 | +Release notes - NHibernate - Version 5.1.0 |
| 5 | + |
| 6 | +** Highlights |
| 7 | + * NHibernate has gained two new target frameworks: .Net Core 2.0 and .Net Standard 2.0. NHibernate NuGet package |
| 8 | + provides them, along with the .Net framework 4.6.1 build. |
| 9 | + For these new frameworks, some additional specificities or limitations apply: |
| 10 | + * Binary serialization is not supported - the user shall implement serialization surrogates for System.Type, |
| 11 | + FieldInfo, PropertyInfo, MethodInfo, ConstructorInfo, Delegate, etc. |
| 12 | + * SqlClient, Odbc, Oledb drivers are converted to ReflectionBasedDriver to avoid the extra dependencies. |
| 13 | + * CallSessionContext uses a static AsyncLocal field to mimic the CallContext behavior. |
| 14 | + * System transactions (transaction scopes) are untested, due to the lack of data providers supporting them. |
| 15 | + * 114 issues were resolved in this release. |
| 16 | + |
| 17 | + ##### Possible Breaking Changes ##### |
| 18 | + * Since Ingres9Dialect is now supporting sequences, the enhanced-sequence identifier generator will default to |
| 19 | + using a sequence instead of a table. Revert to previous behavior by using its force_table_use parameter. |
| 20 | + * Some overridable methods of the Dialect base class and of MsSql2000Dialect have been obsoleted in favor of |
| 21 | + new methods. Dialects implementors need to override the replacing methods if they were overriding the |
| 22 | + obsolete ones, which are: |
| 23 | + * Dialect.GetIfNotExistsCreateConstraint(Table table, string name), replaced by |
| 24 | + GetIfNotExistsCreateConstraint(string catalog, string schema, string table, string name). |
| 25 | + * Dialect.GetIfNotExistsCreateConstraintEnd(Table table, string name), replaced by |
| 26 | + GetIfNotExistsCreateConstraintEnd(string catalog, string schema, string table, string name). |
| 27 | + * Dialect.GetIfExistsDropConstraint(Table table, string name), replaced by |
| 28 | + GetIfExistsDropConstraint(string catalog, string schema, string table, string name). |
| 29 | + * Dialect.GetIfExistsDropConstraintEnd(Table table, string name), replaced by |
| 30 | + GetIfExistsDropConstraintEnd(string catalog, string schema, string table, string name). |
| 31 | + * MsSql2000Dialect.GetSelectExistingObject(string name, Table table), replaced by |
| 32 | + GetSelectExistingObject(string catalog, string schema, string table, string name). |
| 33 | + |
| 34 | +** Bug |
| 35 | + |
| 36 | + * #1606 NHibernate 5 precision maximum on decimal reduced vs. NHibernate 4 |
| 37 | + * #1605 MySql batcher may attempt initiating a new batch without closing open reader first. |
| 38 | + * #1604 MySql batcher disables db exception translation |
| 39 | + * #1602 Preserve original snapshot mode. |
| 40 | + * #1594 AsyncLocal leak in SystemTransactionContext |
| 41 | + * #1587 Prevent substitute garbage collection |
| 42 | + * #1565 For update with outer join fails with PostgreSQL |
| 43 | + * #1562 Fix round registration |
| 44 | + * #1559 Deep removal of Fetch result operators when Any is used |
| 45 | + * #1556 Linq query with "Contains" on persistent collection fails |
| 46 | + * #1551 Assert for a null reference in a flaky test. |
| 47 | + * #1536 Avoid a null reference exception in ExpressionKeyVisitor |
| 48 | + * #1535 Fix some HQL functions registration |
| 49 | + * #1534 Fixed entity name retrieval for EntityProjection |
| 50 | + * #1526 ExpressionKeyVisitor does not produce unique keys for anonymous types coming from different assemblies |
| 51 | + * #1514 Fix exceptions serialization |
| 52 | + * #1511 Test Unicode string. |
| 53 | + * #1509 Add missing NHibernateLogLevel.Info in example web project |
| 54 | + * #1507 NH-3119 - fix test not supporting optimization |
| 55 | + * #1506 SQLite is bugged with distributed transactions: disable distributed tests |
| 56 | + * #1505 Chaining scopes with ODBC is bugged: disabling the test. |
| 57 | + * #1501 Fix NH-3023 test |
| 58 | + * #1496 Fix ManyToOneType.IsModified to handle both object instance and identifier passed to the parameter “old”. |
| 59 | + * #1491 Forgotten async generation for #1487 |
| 60 | + * #1486 Fix IsModified so that a null equates empty components when using select-before-update. |
| 61 | + * #1484 Fix default types |
| 62 | + * #1478 Exception when using envers with the latest logging changes |
| 63 | + * #1476 Fix GetQueryCache storing two different caches. |
| 64 | + * #1468 Comparison with DateTime? produces wrong SQL |
| 65 | + * #1463 Fix a null reference case in session context |
| 66 | + * #1454 Fix ProxyFactory cache |
| 67 | + * #1445 Upgrade AsyncGenerator to 0.6.2 and regenerate. |
| 68 | + * #1442 Unable to use an entity with a `FieldInterceptor` property and a lazy loaded property |
| 69 | + * #1436 StackOverflowException when merging an entity with a lazy property |
| 70 | + * #1434 Replace remaining SetOptions with WithOptions |
| 71 | + * #1385 SecondLevelCache CreateSQLQuery().UniqueResult<int>() throws Exception Specified cast is not valid. |
| 72 | + * #1372 NH-3982 - Simple query with Cacheable, Fetch and SingleOrDefault throws exception (regression from 3.3.0) |
| 73 | + * #1371 NH-3898 - Configuring a property with generated="insert" turns "Property.IsUpdatable" into"false" even using update="true" in the xml mapping file. |
| 74 | + * #1363 NH-2500 - NH 3.0 Linq provider uses query parameters from first call in subsequent calls. |
| 75 | + * #1335 NH-3787 - Decimal truncation in Linq ternary expression |
| 76 | + * #1330 NH-3673 - Closure variable values locked in from expressions in NHibernate LINQ provider |
| 77 | + * #1226 NH-2534 - Join-fetching a many-to-one with property-ref results in select n+1 problem |
| 78 | + * #1196 NH-4087 - Decimal truncation occurs after 5 digits |
| 79 | + * #1119 NH-3084 - Class NHibernate.Loader.Loader logs SQL statement on INFO level |
| 80 | + * #1052 NH-3976 - Inconsistent Decimal/NHibernateUtil.Currency handling causing runtime error when using Oracle.ManagedDataAccess |
| 81 | + * #987 NH-1509 - MsSql2000Dialect does not use default schema when creating "if exists" statement |
| 82 | + * #448 NH-1285 - Drop/Create script with default_schema/default_catalog fix(SqlServer) |
| 83 | + |
| 84 | +** New Feature |
| 85 | + |
| 86 | + * #1588 Add a generic batcher for insert/update/delete statements, usable with PostgreSQL and others |
| 87 | + * #1545 Support to join not associated entities in Criteria (aka Entity Join) |
| 88 | + * #1451 New StaticProxyFactoryFactory |
| 89 | + * #1403 Add timeouts support to MultiCriteria |
| 90 | + * #1377 Logging refactoring |
| 91 | + * #954 NH-3807 - Support for .NET Core 2.0 |
| 92 | + * #948 NH-3435 - Ability to select entities in Criteria projections |
| 93 | + * #910 NH-3606 - Open a stateless session from a session |
| 94 | + * #908 NH-3470 - Allow Linq Query to load entities as read-only |
| 95 | + |
| 96 | +** Improvement |
| 97 | + |
| 98 | + * #1600 Set MySqlClientBatchingBatcher as a default batcher for MySqlDataDriver |
| 99 | + * #1597 Add support for single-argument truncate to dialects that do not support it natively |
| 100 | + * #1569 Modernize test example |
| 101 | + * #1567 Avoid Trim().Length as empty check and ToLowerInvariant() in string comparison |
| 102 | + * #1561 NAnt refactoring |
| 103 | + * #1558 Improved collection batch fetching |
| 104 | + * #1557 Aggregate named queries validation exceptions. |
| 105 | + * #1555 Catch practices: avoid losing catched exception information. |
| 106 | + * #1552 Obsolete UnmodifiableDictionary |
| 107 | + * #1549 Remove an override which was doing the same thing as the base |
| 108 | + * #1548 Add a missing short circuit in query parameter expansion. |
| 109 | + * #1547 Double query translation |
| 110 | + * #1546 Remove a redundant argument in Linq provider ExecuteQuery. |
| 111 | + * #1543 Various string manipulation optimizations |
| 112 | + * #1541 Cache subclass entity aliases in Loader |
| 113 | + * #1537 Avoid unnecessary persister lookup in Loader |
| 114 | + * #1529 Lazy mapping schema loading |
| 115 | + * #1521 Enable warning as error for all projects and configurations |
| 116 | + * #1519 Reuse SchemaExport in CreateSchema/DropSchema in tests |
| 117 | + * #1515 Make NHibernateUtil.Initialize / IsInitialized better reusable for sub-projects like Envers |
| 118 | + * #1504 More reliable SQLite handling in tests. |
| 119 | + * #1502 Upgrade Iesi to 4.0.3 in order to use a release assembly |
| 120 | + * #1498 Cease throwing bare Exception |
| 121 | + * #1494 Update to Oracle installation instructions. |
| 122 | + * #1490 Optimize empty arrays usages |
| 123 | + * #1483 Clean-up of TypeFactory |
| 124 | + * #1482 Refactored DefaultEntityAliases to avoid unnecessary calculations |
| 125 | + * #1477 Reuse the same generic EmptyMapClass instance across the project |
| 126 | + * #1475 Document expiration constraint on UpdateTimestampsCache region. |
| 127 | + * #1467 Reduce the number of calls to UpdateTimestampsCache |
| 128 | + * #1466 Obsolete EqualsHelper |
| 129 | + * #1465 Obsolete EnumerableExtensions |
| 130 | + * #1464 Obsolete ISessionImplementor.Initialize method |
| 131 | + * #1449 Document IsDirty potential side effects |
| 132 | + * #1441 Normalize TargetInvocationException unwrapping |
| 133 | + * #1417 Table counter for aliases should be stable |
| 134 | + * #1412 Store Linq query options in a query provider instead of a queryable |
| 135 | + * #1391 Performance regression in SessionIdLoggingContext |
| 136 | + * #843 NH-3879 - SequenceHiLoGenerator Jumps 1 number each lo > maxLo |
| 137 | + * #842 NH-3869 - Add a way of adding comments into LINQ queries |
| 138 | + * #837 NH-3804 - Register CHR/CHAR, NCHAR, UNICODE, and ASCII standard functions to the dialect(s) |
| 139 | + * #831 NH-3515 - Support for Decimal.Round, Decimal.Ceiling, Decimal.Floor and other static methods of Decimal class |
| 140 | + * #768 NH-3921 - Support sequences in Ingres9Dialect |
| 141 | + * #769 NH-3922 - The various timeout methods should indicate time unit |
| 142 | + |
| 143 | +** Task |
| 144 | + |
| 145 | + * #1610 Move MsSql constants from driver to dialect. |
| 146 | + * #1608 Missing Async test for GH1594 |
| 147 | + * #1603 Forgotten async generation of truncate test |
| 148 | + * #1598 Upgrade IESI to 4.0.4 for having a bumped file version. |
| 149 | + * #1589 Add framework info to example web project and enable .NET Core. |
| 150 | + * #1574 Fix encoding in NorthwindDbCreator.cs |
| 151 | + * #1563 Generate Async test for deep removal of fetch. |
| 152 | + * #1527 Adjust ignore rules for not ignoring DebugHelpers folder and contents |
| 153 | + * #1525 5.1.0 release |
| 154 | + * #1524 Reduce breaking changes due to Ingres9 sequence support |
| 155 | + * #1518 Upgrade to AsyncGenerator 0.8.1 |
| 156 | + * #1512 Upgrade to NUnit 3.9 |
| 157 | + * #1474 Upgrade AsyncGenerator to 0.7.0 |
| 158 | + |
| 159 | +** Tests |
| 160 | + |
| 161 | + * #1539 Add more tests for constants in LINQ queries |
| 162 | + |
| 163 | +As part of releasing 5.1.0, a missing 5.0.0 possible breaking change has been added about inequality semantic in LINQ |
| 164 | +queries. See 5.0.0 possible breaking changes. |
| 165 | + |
| 166 | +Build 5.0.3 |
2 | 167 | =============================
|
3 | 168 |
|
4 | 169 | Release notes - NHibernate - Version 5.0.3
|
@@ -126,6 +291,9 @@ Build 5.0.0
|
126 | 291 | already doing CriteriaImpl.UniqueResult<T>.
|
127 | 292 | * AliasToBeanResultTransformer property/field resolution logic has changed for supporting members
|
128 | 293 | which names differ only by case. See NH-3693 last comments for details.
|
| 294 | + * Linq inequality implementation has been changed for supporting null, meaning that a "a != b" expression |
| 295 | + will now be considered matching if one side is null, while previously due to SQL null semantic it was |
| 296 | + considered non-matching. See NH-3100. |
129 | 297 | * Linq extension methods marked with attribute LinqExtensionMethod will no more be evaluated
|
130 | 298 | in-memory prior to query execution when they do not depend on query results, but will always be
|
131 | 299 | translated to their corresponding SQL call. This can be changed with a parameter of the attribute.
|
|
0 commit comments