diff --git a/_posts/2025-10-07-nhibernate-5-6-released.md b/_posts/2025-10-07-nhibernate-5-6-released.md
new file mode 100644
index 00000000..9381bde8
--- /dev/null
+++ b/_posts/2025-10-07-nhibernate-5-6-released.md
@@ -0,0 +1,27 @@
+---
+layout: post
+title: "NHibernate 5.6 Released"
+date: 2024-10-07T16:47:18Z
+author: fredericDelaporte
+gravatar: 5eaae4002cdfc206faf907aaf38d8a09
+tags:
+ - Release Notes
+---
+NHibernate 5.6.0 is now released.
+
+For a list of resolved issues & pull requests, see the [milestone](https://github.com/nhibernate/nhibernate-core/milestone/66?closed=1) or [the release notes](https://github.com/nhibernate/nhibernate-core/blob/5.6.0/releasenotes.txt).
+
+Binaries are available on NuGet and SourceForge:
+https://sourceforge.net/projects/nhibernate/files/NHibernate/5.6.0/
+https://www.nuget.org/packages/NHibernate/5.6.0
+
+##### Possible Breaking Changes #####
+* A thread synchronization timeout may now occur in case of transaction scope timeout, throwing an additional exception. The additional throw can be disabled through the new setting `transaction.ignore_session_synchronization_failures`. See #3355.
+* The default value of `transaction.system_completion_lock_timeout` has been lowered from 5000 (5 seconds) to 1000 (1 second). See #3355.
+* Binary serializations of a session factory or a session from previous versions of NHibernate will not be deserializable with NHibernate 5.6.
+
+76 issues were resolved in this release.
+
+--
+
+Huge thanks to everyone involved in this release.
\ No newline at end of file
diff --git a/doc/index.html b/doc/index.html
index f20ee18f..6ccfa916 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -5,7 +5,7 @@
Working with object-oriented software and a relational database can be cumbersome
and time consuming in today's enterprise environments. NHibernate is an object/relational
mapping tool for .NET environments. The term object/relational mapping (ORM) refers to
@@ -989,6 +989,13 @@
eg.classname.of.SQLExceptionConverter, assembly
+
escape_backslash_in_strings
+ Indicates if the database needs to have backslash escaped in string literals.
+ The default value is dialect dependant. That is false for
+ most dialects.
+
+ eg.
+ true | false
show_sql
Write all SQL statements to console. Defaults to false.
@@ -1081,12 +1088,30 @@
after scope disposal. This occurs when the transaction is distributed.
This notably concerns ISessionImplementor.AfterTransactionCompletion(bool, ITransaction).
NHibernate protects the session from being concurrently used by the code following the scope disposal
- with a lock. To prevent any application freeze, this lock has a default timeout of five seconds. If the
- application appears to require longer (!) running transaction completion events, this setting allows to
+ with a lock. To prevent any application freeze, this lock has a default timeout of one second. If the
+ application appears to require longer running transaction completion events, this setting allows to
raise this timeout. -1 disables the timeout.
+ Whether session synchronisation failures occuring during finalizations of system transaction should be
+ ignored or not. false by default.
+
+ When a system transaction terminates abnormaly, especially through timeouts, it may have its
+ completion events running on concurrent threads while the session is still performing some processing.
+ To prevent threading concurrency failures, NHibernate then wait for the session to end its processing,
+ up to transaction.system_completion_lock_timeout. If the session processing is still ongoing
+ afterwards, it will by default log an error, perform transaction finalization processing concurrently,
+ then throw a synchronization error. This setting allows to disable that later throw.
+
+ Disabling the throw can be useful if the used data provider has its own locking mechanism applied
+ during transaction completion, preventing the session to end its processing. It may then be safe to
+ ignore this synchronization failure. In case of threading concurrency failure, you may then need to
+ raise transaction.system_completion_lock_timeout.
+
+ eg.
+ true | false
transaction.auto_join
Should sessions check on every operation whether there is an ongoing system transaction or not, and enlist
into it if any?
@@ -1284,7 +1309,7 @@
behavior of System.Data.SQLite with DateTime, consider using
DateTimeFormatString=yyyy-MM-dd HH:mm:ss.FFFFFFF; in the SQLite
connection string for preventing undesired time shifts with its default configuration.
-
Sybase Adaptive Server Anywhere 9
NHibernate.Dialect.SybaseASA9Dialect
Sybase Adaptive Server Enterprise 15
NHibernate.Dialect.SybaseASE15Dialect
Sybase SQL Anywhere 10
NHibernate.Dialect.SybaseSQLAnywhere10Dialect
Sybase SQL Anywhere 11
NHibernate.Dialect.SybaseSQLAnywhere11Dialect
Sybase SQL Anywhere 12
NHibernate.Dialect.SybaseSQLAnywhere12Dialect
+
Sybase Adaptive Server Anywhere 9
NHibernate.Dialect.SybaseASA9Dialect
Sybase Adaptive Server Enterprise 15
NHibernate.Dialect.SybaseASE15Dialect
Sybase Adaptive Server Enterprise 16
NHibernate.Dialect.SybaseASE16Dialect
Sybase SQL Anywhere 10
NHibernate.Dialect.SybaseSQLAnywhere10Dialect
Sybase SQL Anywhere 11
NHibernate.Dialect.SybaseSQLAnywhere11Dialect
Sybase SQL Anywhere 12
NHibernate.Dialect.SybaseSQLAnywhere12Dialect
Additional dialects may be available in the NHibernate.Dialect namespace.
3.6.2. Outer Join Fetching
If your database supports ANSI or Oracle style outer joins, outer join
@@ -2854,7 +2879,7 @@
the value of the property at runtime. The value of the access attribute should
be text formatted as access-strategy.naming-strategy. The
.naming-strategy is not always required.
-
Table 5.1. Access Strategies
Access Strategy Name
Description
property
+
Table 5.1. Access Strategies
Access Strategy Name
Description
property
The default implementation. NHibernate uses the get/set accessors of
the property. No naming strategy should be used with this access strategy
because the value of the name attribute is the name
@@ -2891,7 +2916,7 @@
loaded with Activator.CreateInstance(string assemblyQualifiedName).
-
Table 5.2. Naming Strategies
Naming Strategy Name
Description
camelcase
+
Table 5.2. Naming Strategies
Naming Strategy Name
Description
camelcase
The name attribute is converted to camel case to find the field.
<property name="FooBar" ... > uses the field fooBar.
camelcase-underscore
@@ -3730,7 +3755,7 @@
typed with a Nullable<T>. Otherwise null will be replaced by the default
value for the type when reading, and then will be overwritten by it when persisting the entity, potentially leading to
phantom updates.
-
type="DateTimeNoMs" must be specified. Ignores fractional seconds.
@@ -3774,7 +3799,8 @@
Since NHibernate v5.0 and if the dialect supports it, DbType.DateTime2
is used instead of DbType.DateTime. This may be disabled by setting
sql_types.keep_datetime to true.
-
Table 5.4. System.Object Mapping Types
NHibernate Type
.NET Type
Database Type
Remarks
AnsiString
System.String
DbType.AnsiString
type="AnsiString" must be specified.
CultureInfo
System.Globalization.CultureInfo
DbType.String - 5 chars for culture
Default when no type attribute specified.
Binary
System.Byte[]
DbType.Binary
Default when no type attribute specified.
Type
System.Type
DbType.String holding Assembly Qualified Name.
Default when no type attribute specified.
String
System.String
DbType.String
Default when no type attribute specified.
Uri
System.Uri
DbType.String
Default when no type attribute specified.
+
Table 5.4. System.Object Mapping Types
NHibernate Type
.NET Type
Database Type
Remarks
AnsiString
System.String
DbType.AnsiString
type="AnsiString" must be specified.
CultureInfo
System.Globalization.CultureInfo
DbType.String - 5 chars for culture by default;
+ can be modified by the length mapping attribute.
Default when no type attribute specified.
Binary
System.Byte[]
DbType.Binary
Default when no type attribute specified.
Type
System.Type
DbType.String holding Assembly Qualified Name.
Default when no type attribute specified.
String
System.String
DbType.String
Default when no type attribute specified.
Uri
System.Uri
DbType.String
Default when no type attribute specified.
String types use by default .Net default string equality, which is case sensitive and culture
insensitive. When a string type is used as an identifier, if the underlying database string
equality semantic differs, it may cause issues. For example, loading a children collection by
@@ -3807,7 +3833,7 @@
These settings should be used in order to match the database or column behavior. They are not taken into
account by the hbm2ddl tool for generating the database schema. (In other words, it will not generate
matching collate statements for SQL-Server.)
-
Table 5.5. Large Object Mapping Types
NHibernate Type
.NET Type
Database Type
Remarks
StringClob
System.String
DbType.String
type="StringClob" must be specified. Entire field is read into memory.
BinaryBlob
System.Byte[]
DbType.Binary
type="BinaryBlob" must be specified. Entire field is read into memory.
Serializable
Any System.Object that is marked with SerializableAttribute.
DbType.Binary
type="Serializable" should be specified. This is the fallback type
+
Table 5.5. Large Object Mapping Types
NHibernate Type
.NET Type
Database Type
Remarks
StringClob
System.String
DbType.String
type="StringClob" must be specified. Entire field is read into memory.
BinaryBlob
System.Byte[]
DbType.Binary
type="BinaryBlob" must be specified. Entire field is read into memory.
Serializable
Any System.Object that is marked with SerializableAttribute.
DbType.Binary
type="Serializable" should be specified. This is the fallback type
if no NHibernate Type can be found for the Property.
XDoc
System.Xml.Linq.XDocument
DbType.Xml
Default when no type attribute specified. Entire field is read into memory.
XmlDoc
System.Xml.XmlDocument
DbType.Xml
Default when no type attribute specified. Entire field is read into memory.
NHibernate supports some additional type names for compatibility with Java's Hibernate (useful for those coming over from
Hibernate or using some of the tools to generate hbm.xml files).
@@ -5898,7 +5924,7 @@
The following table shows the limitations of table per concrete-class
mappings, and of implicit polymorphism, in NHibernate.
-
Table 9.1. Features of inheritance mappings
Inheritance strategy
Polymorphic many-to-one
Polymorphic one-to-one
Polymorphic one-to-many
Polymorphic many-to-many
Polymorphic Load()/Get()
Polymorphic queries
Polymorphic joins
Outer join fetching
table per class-hierarchy
<many-to-one>
<one-to-one>
<one-to-many>
<many-to-many>
s.Get<IPayment>(id)
from IPayment p
from Order o join o.Payment p
supported
table per subclass
<many-to-one>
<one-to-one>
<one-to-many>
<many-to-many>
s.Get<IPayment>(id)
from IPayment p
from Order o join o.Payment p
supported
table per concrete-class (union-subclass)
<many-to-one>
<one-to-one>
<one-to-many> (for inverse="true" only)
<many-to-many>
s.Get<IPayment>(id)
from IPayment p
from Order o join o.Payment p
supported
table per concrete class (implicit polymorphism)
<any>
not supported
not supported
<many-to-any>
use a query
from IPayment p
not supported
not supported
Chapter 10. Manipulating Persistent Data
10.1. Creating a persistent object
+
Table 9.1. Features of inheritance mappings
Inheritance strategy
Polymorphic many-to-one
Polymorphic one-to-one
Polymorphic one-to-many
Polymorphic many-to-many
Polymorphic Load()/Get()
Polymorphic queries
Polymorphic joins
Outer join fetching
table per class-hierarchy
<many-to-one>
<one-to-one>
<one-to-many>
<many-to-many>
s.Get<IPayment>(id)
from IPayment p
from Order o join o.Payment p
supported
table per subclass
<many-to-one>
<one-to-one>
<one-to-many>
<many-to-many>
s.Get<IPayment>(id)
from IPayment p
from Order o join o.Payment p
supported
table per concrete-class (union-subclass)
<many-to-one>
<one-to-one>
<one-to-many> (for inverse="true" only)
<many-to-many>
s.Get<IPayment>(id)
from IPayment p
from Order o join o.Payment p
supported
table per concrete class (implicit polymorphism)
<any>
not supported
not supported
<many-to-any>
use a query
from IPayment p
not supported
not supported
Chapter 10. Manipulating Persistent Data
10.1. Creating a persistent object
An object (entity instance) is either transient or
persistent with respect to a particular
ISession. Newly instantiated objects are, of course, transient.
@@ -6377,9 +6403,11 @@
It is possible to change the default behavior so that flush occurs less frequently.
The FlushMode class defines three different modes:
only flush at commit time (and only when the NHibernate ITransaction
- API is used, or inside a transaction scope), flush automatically using the explained
- routine (will only work inside an explicit NHibernate ITransaction or
- inside a transaction scope), or never flush unless
+ API is used, or inside a transaction scope with a legacy option enabled - see
+ Section 12.8, “Transaction scopes (System.Transactions)”), flush automatically using the explained
+ routine (will only work inside an explicit NHibernate ITransaction, or
+ inside a transaction scope with limitations for flushes on commit - see
+ Section 12.8, “Transaction scopes (System.Transactions)”), or never flush unless
Flush() is called explicitly. The last mode is useful for long
running units of work, where an ISession is kept open and disconnected for a long time
(see Section 12.4, “Optimistic concurrency control”).
@@ -10152,7 +10180,7 @@
By default, NHibernate uses HashtableCache for process-level caching. You may choose a different
implementation by specifying the name of a class that implements NHibernate.Cache.ICacheProvider
using the property cache.provider_class.
-
Several cache providers have been contributed by NHibernate users:
-
NHibernate.Caches.Prevalence
- Uses Bamboo.Prevalence as the cache provider. Open the
- file Bamboo.Prevalence.license.txt for more information about its license;
- you can also visit its website. This
- provider is available for the .Net Framework only. Also see Section 27.3, “Prevalence Cache Configuration”.
-
NHibernate.Caches.SysCache
+
NHibernate.Caches.SysCache
Uses System.Web.Caching.Cache as the cache provider. This means that you can
rely on ASP.NET caching feature to understand how it works. For more information, read (on the MSDN):
Caching Application Data.
- This provider is available for the .Net Framework only. Also see Section 27.4, “SysCache Configuration”.
+ This provider is available for the .Net Framework only. Also see Section 27.3, “SysCache Configuration”.
NHibernate.Caches.SysCache2
Similar to NHibernate.Caches.SysCache, uses ASP.NET cache. This provider also supports
SQL dependency-based expiration, meaning that it is possible to configure certain cache regions to automatically
@@ -11898,11 +11921,11 @@
SysCache2 requires Microsoft SQL Server 2000 or higher. This provider is available for the .Net Framework only.
Uses NCache. NCache is a commercial distributed caching system with a provider for NHibernate.
The NCache Express version is free for use, see
@@ -11910,14 +11933,14 @@
for more information.
Uses Microsoft.Extensions.Caching.Abstractions.IDistributedCache implementations as the cache
provider. The implementation has to be provided through an IDistributedCacheFactory.
@@ -11925,15 +11948,14 @@
and Memory caches are available through their own package, prefixed by
NHibernate.Caches.CoreDistributedCache..
Here are the steps to follow to enable the second-level cache in NHibernate:
Choose the cache provider you want to use and copy its assembly in your assemblies directory.
- (For example, NHibernate.Caches.Prevalence.dll or
- NHibernate.Caches.SysCache.dll.)
+ (For example, NHibernate.Caches.SysCache.dll.)
To tell NHibernate which cache provider to use, add in your NHibernate configuration file
(can be YourAssembly.exe.config or web.config or a
@@ -11999,14 +12021,7 @@
Changes of the ConfigurationProvider.Current property value are to be done very
early in the application lifecycle, before building any session factory using the cache provider or
before any other call on the cache API. Otherwise they will not be taken into account.
-
27.3. Prevalence Cache Configuration
- There is only one configurable parameter: prevalenceBase. This is the directory on the
- file system where the Prevalence engine will save data. It can be relative to the current directory or a
- full path. If the directory doesn't exist, it will be created.
-
- The prevalenceBase setting can only be set programmatically through the NHibernate
- configuration object, by example with Configuration.SetProperty.
-
27.4. SysCache Configuration
+
27.3. SysCache Configuration
SysCache relies on System.Web.Caching.Cache for the underlying implementation.
This is a .Net Framework only library, since System.Web.Caching is available neither
in the .Net Standard nor in .Net Core.
@@ -12039,7 +12054,7 @@
<cache region="foo" expiration="500" priority="4" />
<cache region="bar" expiration="300" priority="3" sliding="true" />
</syscache>
-</configuration>
27.5. SysCache2 Configuration
+</configuration>
27.4. SysCache2 Configuration
SysCache2 uses System.Web.Caching like SysCache, but can use SqlCacheDependencies
to invalidate cache regions when data in an underlying SQL Server
table or query changes. Query dependencies are only available for SQL Server 2005 or higher. To use the cache
@@ -12065,7 +12080,7 @@
<configSections>
<section name="syscache2"
type="NHibernate.Caches.SysCache2.SysCacheSection, NHibernate.Caches.SysCache2"/>
-</configSections>
27.5.1. Table-based Dependency
+</configSections>
27.4.1. Table-based Dependency
A table-based dependency will monitor the data in a database table for changes. Table-based
dependencies are generally used for a SQL Server 2000 database but will work with SQL Server 2005 or superior as
well. Before you can use SQL Server cache invalidation with table based dependencies, you need to
@@ -12093,7 +12108,7 @@
The name of a database defined in the databases element for
sqlCacheDependency for caching (ASP.NET Settings Schema) element of the
application's Web.config file.
-
27.5.2. Command-Based Dependencies
+
27.4.2. Command-Based Dependencies
A command-based dependency will use a SQL command to identify records to monitor for data changes.
Command-based dependencies work only with SQL Server 2005.
@@ -12136,7 +12151,7 @@
use for registering the cache dependency for change notifications. If no value is supplied for
connectionName, the unnamed connection supplied by the provider will be
used.
-
27.5.3. Aggregate Dependencies
+
27.4.3. Aggregate Dependencies
Multiple cache dependencies can be specified. If any of the dependencies triggers a change
notification, the data in the cache region will be invalidated. See the samples below.
In addition to data dependencies for the cache regions, time based expiration policies can be specified
for each item added to the cache. Time based expiration policies will not invalidate the data
dependencies for the whole cache region, but serve as a way to remove items from the cache after they
@@ -12182,12 +12197,12 @@
after a daily process completes.
priority
System.Web.Caching.CacheItemPriority that identifies the relative
priority of items stored in the cache.
-
27.6. EnyimMemcached Configuration
+
27.5. EnyimMemcached Configuration
Its configuration relies on the EnyimMemcached library own configuration, through its
enyim.com/memcached configuration section. See
project site.
This is a .Net Framework only library.
-
27.7. RtMemoryCache Configuration
+
27.6. RtMemoryCache Configuration
RtMemoryCache relies on System.Runtime.Caching.MemoryCache for the
underlying implementation.
CoreDistributedCache relies on Microsoft.Extensions.Caching.Abstractions.IDistributedCache
implementations. The implementation has to be provided through an IDistributedCacheFactory, either
supplied through configuration or programmatically by affecting
@@ -12488,7 +12503,7 @@
CoreDistributedCache does not support NHibernate.Cache.ICache.Clear. Clearing the NHibernate
cache has no effects with CoreDistributedCache.
-
27.10.1. Memcached distributed cache factory
+
27.9.1. Memcached distributed cache factory
NHibernate.Caches.CoreDistributedCache.Memcached provides a Memcached distributed cache factory.
This factory yields a Enyim.Caching.MemcachedClient from EnyimMemcachedCore.
For using it, reference the cache factory package and set the factory-class attribute of the
@@ -12511,7 +12526,7 @@
"Port": 11211
}
]
-}
27.10.2. Redis distributed cache factory
+}
27.9.2. Redis distributed cache factory
NHibernate.Caches.CoreDistributedCache.Redis provides a Redis distributed cache factory.
This factory yields a Microsoft.Extensions.Caching.Redis.RedisCache. For using it,
reference the cache factory package and set the factory-class attribute of the
@@ -12525,7 +12540,7 @@
instance-name
Its value will be used to set the InstanceName property of the
RedisCache options (RedisCacheOptions).
-
27.10.3. SQL Server distributed cache factory
+
27.9.3. SQL Server distributed cache factory
NHibernate.Caches.CoreDistributedCache.SqlServer provides a SQL Server distributed cache factory.
This factory yields a Microsoft.Extensions.Caching.SqlServer.SqlServerCache. For using it,
reference the cache factory package and set the factory-class attribute of the
@@ -12547,7 +12562,7 @@
SqlServerCache options (SqlServerCacheOptions). It can be
provided either as an integer being a number of minutes or as a TimeSpan string
representation.
-
27.10.4. Memory distributed cache factory
+
27.9.4. Memory distributed cache factory
NHibernate.Caches.CoreDistributedCache.Memory provides a memory "distributed" cache factory.
This factory yields a Microsoft.Extensions.Caching.Memory.MemoryDistributedCache. For using it,
reference the cache factory package and set the factory-class attribute of the
diff --git a/doc/nhibernate-reference/architecture.html b/doc/nhibernate-reference/architecture.html
index 6ae9b65f..825ad838 100644
--- a/doc/nhibernate-reference/architecture.html
+++ b/doc/nhibernate-reference/architecture.html
@@ -6,7 +6,8 @@
-
Several cache providers have been contributed by NHibernate users:
-
NHibernate.Caches.Prevalence
- Uses Bamboo.Prevalence as the cache provider. Open the
- file Bamboo.Prevalence.license.txt for more information about its license;
- you can also visit its website. This
- provider is available for the .Net Framework only. Also see Section 27.3, “Prevalence Cache Configuration”.
-
NHibernate.Caches.SysCache
+
NHibernate.Caches.SysCache
Uses System.Web.Caching.Cache as the cache provider. This means that you can
rely on ASP.NET caching feature to understand how it works. For more information, read (on the MSDN):
Caching Application Data.
- This provider is available for the .Net Framework only. Also see Section 27.4, “SysCache Configuration”.
+ This provider is available for the .Net Framework only. Also see Section 27.3, “SysCache Configuration”.
NHibernate.Caches.SysCache2
Similar to NHibernate.Caches.SysCache, uses ASP.NET cache. This provider also supports
SQL dependency-based expiration, meaning that it is possible to configure certain cache regions to automatically
@@ -53,11 +49,11 @@
SysCache2 requires Microsoft SQL Server 2000 or higher. This provider is available for the .Net Framework only.
Uses NCache. NCache is a commercial distributed caching system with a provider for NHibernate.
The NCache Express version is free for use, see
@@ -65,14 +61,14 @@
for more information.
Uses Microsoft.Extensions.Caching.Abstractions.IDistributedCache implementations as the cache
provider. The implementation has to be provided through an IDistributedCacheFactory.
@@ -80,15 +76,14 @@
and Memory caches are available through their own package, prefixed by
NHibernate.Caches.CoreDistributedCache..
Here are the steps to follow to enable the second-level cache in NHibernate:
Choose the cache provider you want to use and copy its assembly in your assemblies directory.
- (For example, NHibernate.Caches.Prevalence.dll or
- NHibernate.Caches.SysCache.dll.)
+ (For example, NHibernate.Caches.SysCache.dll.)
To tell NHibernate which cache provider to use, add in your NHibernate configuration file
(can be YourAssembly.exe.config or web.config or a
@@ -154,14 +149,7 @@
Changes of the ConfigurationProvider.Current property value are to be done very
early in the application lifecycle, before building any session factory using the cache provider or
before any other call on the cache API. Otherwise they will not be taken into account.
-
27.3. Prevalence Cache Configuration
- There is only one configurable parameter: prevalenceBase. This is the directory on the
- file system where the Prevalence engine will save data. It can be relative to the current directory or a
- full path. If the directory doesn't exist, it will be created.
-
- The prevalenceBase setting can only be set programmatically through the NHibernate
- configuration object, by example with Configuration.SetProperty.
-
27.4. SysCache Configuration
+
27.3. SysCache Configuration
SysCache relies on System.Web.Caching.Cache for the underlying implementation.
This is a .Net Framework only library, since System.Web.Caching is available neither
in the .Net Standard nor in .Net Core.
@@ -194,7 +182,7 @@
<cache region="foo" expiration="500" priority="4" />
<cache region="bar" expiration="300" priority="3" sliding="true" />
</syscache>
-</configuration>
27.5. SysCache2 Configuration
+</configuration>
27.4. SysCache2 Configuration
SysCache2 uses System.Web.Caching like SysCache, but can use SqlCacheDependencies
to invalidate cache regions when data in an underlying SQL Server
table or query changes. Query dependencies are only available for SQL Server 2005 or higher. To use the cache
@@ -220,7 +208,7 @@
<configSections>
<section name="syscache2"
type="NHibernate.Caches.SysCache2.SysCacheSection, NHibernate.Caches.SysCache2"/>
-</configSections>
27.5.1. Table-based Dependency
+</configSections>
27.4.1. Table-based Dependency
A table-based dependency will monitor the data in a database table for changes. Table-based
dependencies are generally used for a SQL Server 2000 database but will work with SQL Server 2005 or superior as
well. Before you can use SQL Server cache invalidation with table based dependencies, you need to
@@ -248,7 +236,7 @@
The name of a database defined in the databases element for
sqlCacheDependency for caching (ASP.NET Settings Schema) element of the
application's Web.config file.
-
27.5.2. Command-Based Dependencies
+
27.4.2. Command-Based Dependencies
A command-based dependency will use a SQL command to identify records to monitor for data changes.
Command-based dependencies work only with SQL Server 2005.
@@ -291,7 +279,7 @@
use for registering the cache dependency for change notifications. If no value is supplied for
connectionName, the unnamed connection supplied by the provider will be
used.
-
27.5.3. Aggregate Dependencies
+
27.4.3. Aggregate Dependencies
Multiple cache dependencies can be specified. If any of the dependencies triggers a change
notification, the data in the cache region will be invalidated. See the samples below.
In addition to data dependencies for the cache regions, time based expiration policies can be specified
for each item added to the cache. Time based expiration policies will not invalidate the data
dependencies for the whole cache region, but serve as a way to remove items from the cache after they
@@ -337,12 +325,12 @@
after a daily process completes.
priority
System.Web.Caching.CacheItemPriority that identifies the relative
priority of items stored in the cache.
-
27.6. EnyimMemcached Configuration
+
27.5. EnyimMemcached Configuration
Its configuration relies on the EnyimMemcached library own configuration, through its
enyim.com/memcached configuration section. See
project site.
This is a .Net Framework only library.
-
27.7. RtMemoryCache Configuration
+
27.6. RtMemoryCache Configuration
RtMemoryCache relies on System.Runtime.Caching.MemoryCache for the
underlying implementation.
CoreDistributedCache relies on Microsoft.Extensions.Caching.Abstractions.IDistributedCache
implementations. The implementation has to be provided through an IDistributedCacheFactory, either
supplied through configuration or programmatically by affecting
@@ -643,7 +631,7 @@
CoreDistributedCache does not support NHibernate.Cache.ICache.Clear. Clearing the NHibernate
cache has no effects with CoreDistributedCache.
-
27.10.1. Memcached distributed cache factory
+
27.9.1. Memcached distributed cache factory
NHibernate.Caches.CoreDistributedCache.Memcached provides a Memcached distributed cache factory.
This factory yields a Enyim.Caching.MemcachedClient from EnyimMemcachedCore.
For using it, reference the cache factory package and set the factory-class attribute of the
@@ -666,7 +654,7 @@
"Port": 11211
}
]
-}
27.10.2. Redis distributed cache factory
+}
27.9.2. Redis distributed cache factory
NHibernate.Caches.CoreDistributedCache.Redis provides a Redis distributed cache factory.
This factory yields a Microsoft.Extensions.Caching.Redis.RedisCache. For using it,
reference the cache factory package and set the factory-class attribute of the
@@ -680,7 +668,7 @@
instance-name
Its value will be used to set the InstanceName property of the
RedisCache options (RedisCacheOptions).
-
27.10.3. SQL Server distributed cache factory
+
27.9.3. SQL Server distributed cache factory
NHibernate.Caches.CoreDistributedCache.SqlServer provides a SQL Server distributed cache factory.
This factory yields a Microsoft.Extensions.Caching.SqlServer.SqlServerCache. For using it,
reference the cache factory package and set the factory-class attribute of the
@@ -702,7 +690,7 @@
SqlServerCache options (SqlServerCacheOptions). It can be
provided either as an integer being a number of minutes or as a TimeSpan string
representation.
-
27.10.4. Memory distributed cache factory
+
27.9.4. Memory distributed cache factory
NHibernate.Caches.CoreDistributedCache.Memory provides a memory "distributed" cache factory.
This factory yields a Microsoft.Extensions.Caching.Memory.MemoryDistributedCache. For using it,
reference the cache factory package and set the factory-class attribute of the
diff --git a/doc/nhibernate-reference/collections.html b/doc/nhibernate-reference/collections.html
index 011482e8..c9deed12 100644
--- a/doc/nhibernate-reference/collections.html
+++ b/doc/nhibernate-reference/collections.html
@@ -6,7 +6,8 @@
-