Skip to content

Commit

Permalink
[#487] [add] Oracle dialect
Browse files Browse the repository at this point in the history
  • Loading branch information
i4004 committed Jan 14, 2024
1 parent 849f6be commit 796a031
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 9 deletions.
29 changes: 21 additions & 8 deletions src/Simplify.FluentNHibernate/ConfigurationExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using FluentNHibernate.Cfg.Db;
using FluentNHibernate.Conventions;
using Microsoft.Extensions.Configuration;
using NHibernate.Dialect;
using NHibernate.Driver;
using Simplify.FluentNHibernate.Dialects;
using Simplify.FluentNHibernate.Drivers;
Expand All @@ -25,17 +26,19 @@ public static class ConfigurationExtensions
/// <param name="fluentConfiguration">The fluentNHibernate configuration.</param>
/// <param name="configSectionName">Configuration section name in App.config or Web.config file.</param>
/// <param name="additionalClientConfiguration">The additional client configuration.</param>
/// <returns></returns>
/// <param name="dialect">The dialect.</param>
/// <exception cref="ArgumentNullException">fluentConfiguration</exception>
public static FluentConfiguration InitializeFromConfigOracleClient(this FluentConfiguration fluentConfiguration,
string configSectionName = "DatabaseConnectionSettings",
Action<OracleDataClientConfiguration>? additionalClientConfiguration = null)
Action<OracleDataClientConfiguration>? additionalClientConfiguration = null,
OracleDialect dialect = OracleDialect.Oracle10g)
{
if (fluentConfiguration == null) throw new ArgumentNullException(nameof(fluentConfiguration));

InitializeFromConfigOracleClient(fluentConfiguration,
new ConfigurationManagerBasedDbConnectionSettings(configSectionName),
additionalClientConfiguration);
additionalClientConfiguration,
dialect);

return fluentConfiguration;
}
Expand All @@ -47,30 +50,40 @@ public static class ConfigurationExtensions
/// <param name="configuration">The configuration containing database config section.</param>
/// <param name="configSectionName">Database configuration section name in configuration.</param>
/// <param name="additionalClientConfiguration">The additional client configuration.</param>
/// <returns></returns>
/// <param name="dialect">The dialect.</param>
/// <exception cref="ArgumentNullException">fluentConfiguration
/// or
/// configuration</exception>
public static FluentConfiguration InitializeFromConfigOracleClient(this FluentConfiguration fluentConfiguration,
IConfiguration configuration,
string configSectionName = "DatabaseConnectionSettings",
Action<OracleDataClientConfiguration>? additionalClientConfiguration = null)
Action<OracleDataClientConfiguration>? additionalClientConfiguration = null,
OracleDialect dialect = OracleDialect.Oracle10g)
{
if (fluentConfiguration == null) throw new ArgumentNullException(nameof(fluentConfiguration));
if (configuration == null) throw new ArgumentNullException(nameof(configuration));

InitializeFromConfigOracleClient(fluentConfiguration,
new ConfigurationBasedDbConnectionSettings(configuration, configSectionName),
additionalClientConfiguration);
additionalClientConfiguration,
dialect);

return fluentConfiguration;
}

private static void InitializeFromConfigOracleClient(FluentConfiguration fluentConfiguration,
DbConnectionSettings settings,
Action<OracleDataClientConfiguration>? additionalClientConfiguration = null)
Action<OracleDataClientConfiguration>? additionalClientConfiguration = null,
OracleDialect dialect = OracleDialect.Oracle10g)
{
var clientConfiguration = OracleDataClientConfiguration.Oracle10.ConnectionString(c =>
var clientConfiguration = dialect switch
{
OracleDialect.Oracle9i => OracleDataClientConfiguration.Oracle9,
OracleDialect.Oracle10g => OracleDataClientConfiguration.Oracle10,
_ => throw new InvalidOperationException()
};

clientConfiguration.ConnectionString(c =>
c.Server(settings.ServerName)
.Port(settings.Port ?? 1521)
.Instance(settings.DataBaseName)
Expand Down
16 changes: 16 additions & 0 deletions src/Simplify.FluentNHibernate/Dialects/OracleDialect.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
namespace Simplify.FluentNHibernate.Dialects;

/// <summary>
/// Provides Oracle DBMS dialect
/// </summary>
public enum OracleDialect
{
/// <summary>
/// The Oracle 9i dialect
/// </summary>
Oracle9i,
/// <summary>
/// The Oracle 10g dialect
/// </summary>
Oracle10g
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
namespace Simplify.FluentNHibernate.Dialects;

/// <summary>
/// Provides PostgreSQL dialect
/// Provides PostgreSQL DBMS dialect
/// </summary>
public enum PostgreSqlDialect
{
Expand Down

0 comments on commit 796a031

Please sign in to comment.