Skip to content

Commit bb16e78

Browse files
committed
[add] Port support to MsSql connection settings
1 parent 477aeef commit bb16e78

5 files changed

Lines changed: 63 additions & 7 deletions

File tree

src/Simplify.FluentNHibernate.Tests/ConfigurationExtensionsTests.cs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using FluentNHibernate.Cfg;
22
using Microsoft.Extensions.Configuration;
3+
using NHibernate.Cfg;
34
using NHibernate.Dialect;
45
using NUnit.Framework;
56

@@ -60,6 +61,34 @@ public void InitializeFromConfigMsSql_CorrectConfig_NoExceptions()
6061
Fluently.Configure().InitializeFromConfigMsSql(_configuration);
6162
}
6263

64+
[Test]
65+
public void InitializeFromConfigMsSql_PortConfigured_ConnectionStringContainsPort()
66+
{
67+
// Arrange & Act
68+
Configuration config = null;
69+
Fluently.Configure()
70+
.InitializeFromConfigMsSql(_configuration)
71+
.ExposeConfiguration(c => config = c)
72+
.BuildConfiguration();
73+
74+
// Assert
75+
Assert.That(config.GetProperty(Environment.ConnectionString), Does.Contain("localhost,1231"));
76+
}
77+
78+
[Test]
79+
public void InitializeFromConfigMsSqlMicrosoftDriver_PortConfigured_ConnectionStringContainsPort()
80+
{
81+
// Arrange & Act
82+
Configuration config = null;
83+
Fluently.Configure()
84+
.InitializeFromConfigMsSqlMicrosoftDriver(_configuration)
85+
.ExposeConfiguration(c => config = c)
86+
.BuildConfiguration();
87+
88+
// Assert
89+
Assert.That(config.GetProperty(Environment.ConnectionString), Does.Contain("localhost,1231"));
90+
}
91+
6392
[Test]
6493
public void InitializeFromConfigSqLiteInMemory_CorrectConfig_NoExceptions()
6594
{

src/Simplify.FluentNHibernate.Tests/SessionFactoryBuilderBaseTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,6 @@ public void ConnectionString_MsSql_CorrectConnectionString()
2626
var result = builder.ConnectionString;
2727

2828
// Assert
29-
Assert.That(result, Is.EqualTo("Data Source=localhost;Initial Catalog=foodatabase;Integrated Security=False;User ID=foouser;Password=foopassword"));
29+
Assert.That(result, Is.EqualTo("Data Source=localhost,1231;Initial Catalog=foodatabase;Integrated Security=False;User ID=foouser;Password=foopassword"));
3030
}
3131
}

src/Simplify.FluentNHibernate/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# Changelog
22

3+
## [3.5.0] - 2026-08-19
4+
5+
### Added
6+
7+
- `Port` connection setting support for `InitializeFromConfigMsSql` — since FluentNHibernate's connection string builder has no port property, a raw connection string with the `Data Source=host,port` format is used whenever the port is explicitly configured
8+
39
## [3.4.0] - 2026-07-09
410

511
### Added

src/Simplify.FluentNHibernate/ConfigurationExtensions.cs

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -437,11 +437,16 @@ private static void InitializeFromConfigMsSql(FluentConfiguration fluentConfigur
437437
_ => throw new InvalidOperationException()
438438
};
439439

440-
clientConfiguration.ConnectionString(c => c
441-
.Server(settings.ServerName)
442-
.Database(settings.DataBaseName)
443-
.Username(settings.UserName)
444-
.Password(settings.UserPassword ?? throw new ArgumentException($"{nameof(settings.UserPassword)} is null")));
440+
// FluentNHibernate's connection string builder has no Port support,
441+
// so a raw connection string is required whenever the port is explicitly configured.
442+
if (settings.Port.HasValue)
443+
clientConfiguration.ConnectionString(BuildMsSqlRawConnectionString(settings));
444+
else
445+
clientConfiguration.ConnectionString(c => c
446+
.Server(settings.ServerName)
447+
.Database(settings.DataBaseName)
448+
.Username(settings.UserName)
449+
.Password(settings.UserPassword ?? throw new ArgumentException($"{nameof(settings.UserPassword)} is null")));
445450

446451
additionalClientConfiguration?.Invoke(clientConfiguration);
447452

@@ -450,6 +455,22 @@ private static void InitializeFromConfigMsSql(FluentConfiguration fluentConfigur
450455
PerformCommonInitialization(fluentConfiguration, settings.ShowSql, settings.ShowSqlOutputType);
451456
}
452457

458+
private static string BuildMsSqlRawConnectionString(DbConnectionSettings settings)
459+
{
460+
var password = settings.UserPassword ?? throw new ArgumentException($"{nameof(settings.UserPassword)} is null");
461+
462+
var connectionString = settings.Port.HasValue
463+
? $"Data Source={settings.ServerName},{settings.Port.Value}"
464+
: $"Data Source={settings.ServerName}";
465+
466+
connectionString += $";Initial Catalog={settings.DataBaseName}";
467+
connectionString += ";Integrated Security=False";
468+
connectionString += $";User ID={settings.UserName}";
469+
connectionString += $";Password={password}";
470+
471+
return connectionString;
472+
}
473+
453474
#endregion MS SQL
454475

455476
#region MS SQL Microsoft Driver

src/Simplify.FluentNHibernate/Simplify.FluentNHibernate.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
99
<GenerateDocumentationFile>true</GenerateDocumentationFile>
1010

11-
<Version>3.4</Version>
11+
<Version>3.5</Version>
1212

1313
<Description>Simplifies FluentNHibernate connection configuration and allows you to write data-base queries with lambda expressions</Description>
1414
<Product>Simplify</Product>

0 commit comments

Comments
 (0)