diff --git a/src/NHibernate.Test/Async/MultiTenancy/DatabaseStrategyNoDbSpecificFixture.cs b/src/NHibernate.Test/Async/MultiTenancy/DatabaseStrategyNoDbSpecificFixture.cs
index 3fc06fb5a44..81f6b14b5cd 100644
--- a/src/NHibernate.Test/Async/MultiTenancy/DatabaseStrategyNoDbSpecificFixture.cs
+++ b/src/NHibernate.Test/Async/MultiTenancy/DatabaseStrategyNoDbSpecificFixture.cs
@@ -19,6 +19,7 @@
using NHibernate.Dialect;
using NHibernate.Driver;
using NHibernate.Engine;
+using NHibernate.Engine.Transaction;
using NHibernate.Linq;
using NHibernate.Mapping.ByCode;
using NHibernate.MultiTenancy;
@@ -28,6 +29,7 @@
namespace NHibernate.Test.MultiTenancy
{
using System.Threading.Tasks;
+ using System.Threading;
[TestFixture]
public class DatabaseStrategyNoDbSpecificFixtureAsync : TestCaseMappingByCode
{
@@ -160,6 +162,18 @@ public async Task TenantSessionIsSerializableAndCanBeReconnectedAsync()
Assert.That(Sfi.Statistics.SecondLevelCacheHitCount, Is.EqualTo(1));
}
+ [Test]
+ public async Task TenantIsolatedWorkOpensTenantConnectionAsync()
+ {
+ if (!IsSqlServerDialect)
+ Assert.Ignore("MSSqlServer specific test");
+
+ using (var ses = OpenTenantSession("tenant1"))
+ {
+ await (Isolater.DoIsolatedWorkAsync(new TenantIsolatatedWork("tenant1"), ses.GetSessionImplementation(), CancellationToken.None));
+ }
+ }
+
private static string GetTenantId(ISession session)
{
return session.GetSessionImplementation().GetTenantIdentifier();
diff --git a/src/NHibernate.Test/Async/MultiTenancy/TenantIsolatatedWork.cs b/src/NHibernate.Test/Async/MultiTenancy/TenantIsolatatedWork.cs
new file mode 100644
index 00000000000..238f854e7ed
--- /dev/null
+++ b/src/NHibernate.Test/Async/MultiTenancy/TenantIsolatatedWork.cs
@@ -0,0 +1,30 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by AsyncGenerator.
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+
+using System.Data.Common;
+using System.Data.SqlClient;
+using NHibernate.Engine.Transaction;
+
+namespace NHibernate.Test.MultiTenancy
+{
+ using System.Threading.Tasks;
+ using System.Threading;
+ public partial class TenantIsolatatedWork : IIsolatedWork
+ {
+
+ public Task DoWorkAsync(DbConnection connection, DbTransaction transaction, CancellationToken cancellationToken)
+ {
+ var builder = new SqlConnectionStringBuilder(connection.ConnectionString);
+ if (builder.ApplicationName != _tenantName)
+ return Task.FromException