From 1c40ddee5b4a50d953c63dbae1bfa2f64eb7caaa Mon Sep 17 00:00:00 2001 From: Alex Zaytsev Date: Sun, 6 Aug 2023 11:38:28 +1000 Subject: [PATCH 01/13] Do not store mapping in Configuration --- src/NHibernate/Cfg/Configuration.cs | 67 +++++++++++------------------ 1 file changed, 26 insertions(+), 41 deletions(-) diff --git a/src/NHibernate/Cfg/Configuration.cs b/src/NHibernate/Cfg/Configuration.cs index 6b52f6008ba..a15ea0c05f9 100644 --- a/src/NHibernate/Cfg/Configuration.cs +++ b/src/NHibernate/Cfg/Configuration.cs @@ -98,7 +98,6 @@ public Configuration(SerializationInfo info, StreamingContext context) FilterDefinitions = GetSerialedObject>(info, "filterDefinitions"); Imports = GetSerialedObject>(info, "imports"); interceptor = GetSerialedObject(info, "interceptor"); - mapping = GetSerialedObject(info, "mapping"); NamedQueries = GetSerialedObject>(info, "namedQueries"); NamedSQLQueries = GetSerialedObject>(info, "namedSqlQueries"); namingStrategy = GetSerialedObject(info, "namingStrategy"); @@ -124,7 +123,7 @@ public void GetObjectData(SerializationInfo info, StreamingContext context) { ConfigureProxyFactoryFactory(); SecondPassCompile(); - Validate(); + Validate(BuildMapping()); info.AddValue("entityNotFoundDelegate", EntityNotFoundDelegate); @@ -139,7 +138,6 @@ public void GetObjectData(SerializationInfo info, StreamingContext context) info.AddValue("filterDefinitions", FilterDefinitions); info.AddValue("imports", Imports); info.AddValue("interceptor", interceptor); - info.AddValue("mapping", mapping); info.AddValue("namedQueries", NamedQueries); info.AddValue("namedSqlQueries", NamedSQLQueries); info.AddValue("namingStrategy", namingStrategy); @@ -246,10 +244,10 @@ private class StaticDialectMappingWrapper : IMapping { private readonly IMapping _mapping; - public StaticDialectMappingWrapper(IMapping mapping) + public StaticDialectMappingWrapper(IMapping mapping, Dialect.Dialect dialect) { _mapping = mapping; - Dialect = mapping.Dialect; + Dialect = dialect; } public IType GetIdentifierType(string className) @@ -275,20 +273,12 @@ public bool HasNonIdentifierPropertyNamedId(string className) public Dialect.Dialect Dialect { get; } } - private IMapping mapping; - protected Configuration(SettingsFactory settingsFactory) { - InitBlock(); this.settingsFactory = settingsFactory; Reset(); } - private void InitBlock() - { - mapping = BuildMapping(); - } - public virtual IMapping BuildMapping() { return new Mapping(this); @@ -934,6 +924,9 @@ public static bool IncludeAction(SchemaAction actionsSource, SchemaAction includ /// public string[] GenerateSchemaCreationScript(Dialect.Dialect dialect) { + var m = BuildMapping(); + var mapping = new StaticDialectMappingWrapper(m, dialect); + SecondPassCompile(); var defaultCatalog = GetQuotedDefaultCatalog(dialect); @@ -1001,11 +994,11 @@ public string[] GenerateSchemaCreationScript(Dialect.Dialect dialect) return script.ToArray(); } - private void Validate() + private void Validate(IMapping mapping) { - ValidateEntities(); + ValidateEntities(mapping); - ValidateCollections(); + ValidateCollections(mapping); ValidateFilterDefs(); } @@ -1059,7 +1052,7 @@ private void ValidateFilterDefs() } } - private void ValidateCollections() + private void ValidateCollections(IMapping mapping) { foreach (var col in collections.Values) { @@ -1067,7 +1060,7 @@ private void ValidateCollections() } } - private void ValidateEntities() + private void ValidateEntities(IMapping mapping) { bool validateProxy = PropertiesHelper.GetBoolean(Environment.UseProxyValidator, properties, true); HashSet allProxyErrors = null; @@ -1281,8 +1274,7 @@ protected virtual void ConfigureProxyFactoryFactory() //http://nhibernate.jira.com/browse/NH-975 var ipff = Environment.BytecodeProvider as IInjectableProxyFactoryFactory; - string pffClassName; - properties.TryGetValue(Environment.ProxyFactoryFactoryClass, out pffClassName); + properties.TryGetValue(Environment.ProxyFactoryFactoryClass, out var pffClassName); if (ipff != null && !string.IsNullOrEmpty(pffClassName)) { ipff.SetProxyFactoryFactory(pffClassName); @@ -1299,33 +1291,22 @@ protected virtual void ConfigureProxyFactoryFactory() /// An instance. public ISessionFactory BuildSessionFactory() { - var dynamicDialectMapping = mapping; // Use a mapping which does store the dialect instead of instantiating a new one // at each access. The dialect does not change while building a session factory. // It furthermore allows some hack on NHibernate.Spatial side to go on working, // See nhibernate/NHibernate.Spatial#104 - mapping = new StaticDialectMappingWrapper(mapping); - try - { - ConfigureProxyFactoryFactory(); - SecondPassCompile(); - Validate(); - Environment.VerifyProperties(properties); - Settings settings = BuildSettings(); + var m = BuildMapping(); + var mapping = new StaticDialectMappingWrapper(m, m.Dialect); + ConfigureProxyFactoryFactory(); + SecondPassCompile(); + Validate(mapping); + Environment.VerifyProperties(properties); + Settings settings = BuildSettings(); - // Ok, don't need schemas anymore, so free them - Schemas = null; + // Ok, don't need schemas anymore, so free them + Schemas = null; - return new SessionFactoryImpl( - this, - mapping, - settings, - GetInitializedEventListeners()); - } - finally - { - mapping = dynamicDialectMapping; - } + return new SessionFactoryImpl(this, mapping, settings, GetInitializedEventListeners()); } /// @@ -2358,6 +2339,8 @@ private static T[] AppendListeners(T[] existing, T[] listenersToAdd) /// public string[] GenerateSchemaUpdateScript(Dialect.Dialect dialect, IDatabaseMetadata databaseMetadata) { + var m = BuildMapping(); + var mapping = new StaticDialectMappingWrapper(m, dialect); SecondPassCompile(); var defaultCatalog = GetQuotedDefaultCatalog(dialect); @@ -2438,6 +2421,8 @@ public string[] GenerateSchemaUpdateScript(Dialect.Dialect dialect, IDatabaseMet public void ValidateSchema(Dialect.Dialect dialect, IDatabaseMetadata databaseMetadata) { + var m = BuildMapping(); + var mapping = new StaticDialectMappingWrapper(m, dialect); SecondPassCompile(); var defaultCatalog = GetQuotedDefaultCatalog(dialect); From ee07fe22c62bb5cd4f2109173afd3914f854e7a0 Mon Sep 17 00:00:00 2001 From: Alex Zaytsev Date: Sun, 6 Aug 2023 11:42:41 +1000 Subject: [PATCH 02/13] Create settings before mappings --- src/NHibernate/Cfg/Configuration.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/NHibernate/Cfg/Configuration.cs b/src/NHibernate/Cfg/Configuration.cs index a15ea0c05f9..2f12f694325 100644 --- a/src/NHibernate/Cfg/Configuration.cs +++ b/src/NHibernate/Cfg/Configuration.cs @@ -1296,12 +1296,12 @@ public ISessionFactory BuildSessionFactory() // It furthermore allows some hack on NHibernate.Spatial side to go on working, // See nhibernate/NHibernate.Spatial#104 var m = BuildMapping(); - var mapping = new StaticDialectMappingWrapper(m, m.Dialect); + var settings = BuildSettings(); + var mapping = new StaticDialectMappingWrapper(m, settings.Dialect); ConfigureProxyFactoryFactory(); SecondPassCompile(); Validate(mapping); Environment.VerifyProperties(properties); - Settings settings = BuildSettings(); // Ok, don't need schemas anymore, so free them Schemas = null; From 53290911587368153e283b52abd8899083865126 Mon Sep 17 00:00:00 2001 From: Alex Zaytsev Date: Sun, 6 Aug 2023 11:46:13 +1000 Subject: [PATCH 03/13] Throw invalid operation exception if dialect is not ready yet --- src/NHibernate/Cfg/Configuration.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NHibernate/Cfg/Configuration.cs b/src/NHibernate/Cfg/Configuration.cs index 2f12f694325..7b72108fdb0 100644 --- a/src/NHibernate/Cfg/Configuration.cs +++ b/src/NHibernate/Cfg/Configuration.cs @@ -236,7 +236,7 @@ public bool HasNonIdentifierPropertyNamedId(string className) } public Dialect.Dialect Dialect => - NHibernate.Dialect.Dialect.GetDialect(configuration.Properties); + throw new InvalidOperationException("The dialect is not ready at this stage of the configuration."); } [Serializable] From e17be078a54317a2367e4811157a7b10ea21d7e4 Mon Sep 17 00:00:00 2001 From: Alex Zaytsev Date: Sun, 6 Aug 2023 11:51:23 +1000 Subject: [PATCH 04/13] Make DeepSource happy --- src/NHibernate/Cfg/Configuration.cs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/NHibernate/Cfg/Configuration.cs b/src/NHibernate/Cfg/Configuration.cs index 7b72108fdb0..c40cd3ff2ba 100644 --- a/src/NHibernate/Cfg/Configuration.cs +++ b/src/NHibernate/Cfg/Configuration.cs @@ -538,9 +538,8 @@ private void AddValidatedDocument(NamedXmlDocument doc) public void AddDeserializedMapping(HbmMapping mappingDocument, string documentFileName) { if (mappingDocument == null) - { - throw new ArgumentNullException("mappingDocument"); - } + throw new ArgumentNullException(nameof(mappingDocument)); + try { var dialect = new Lazy(() => Dialect.Dialect.GetDialect(properties)); @@ -735,9 +734,8 @@ public Configuration AddResource(string path, Assembly assembly) public Configuration AddResources(IEnumerable paths, Assembly assembly) { if (paths == null) - { - throw new ArgumentNullException("paths"); - } + throw new ArgumentNullException(nameof(paths)); + foreach (var path in paths) { AddResource(path, assembly); From 92ad4683e50a933af73689fd8b5273ea87b9d3e9 Mon Sep 17 00:00:00 2001 From: Alex Zaytsev Date: Sun, 6 Aug 2023 12:07:08 +1000 Subject: [PATCH 05/13] Remove reflection from tests --- .../DialectTest/MsSql2008DialectFixture.cs | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/src/NHibernate.Test/DialectTest/MsSql2008DialectFixture.cs b/src/NHibernate.Test/DialectTest/MsSql2008DialectFixture.cs index e02b69dfed2..3115bf26328 100644 --- a/src/NHibernate.Test/DialectTest/MsSql2008DialectFixture.cs +++ b/src/NHibernate.Test/DialectTest/MsSql2008DialectFixture.cs @@ -148,16 +148,7 @@ public void ScaleTypes() Assert.That(dialect.GetTypeName(SqlTypeFactory.GetTime(max + 1)), Is.EqualTo("time").IgnoreCase, "Over max time"); } - private static readonly FieldInfo _mappingField = - typeof(Configuration).GetField("mapping", BindingFlags.Instance | BindingFlags.NonPublic); - - private static IMapping GetMapping(Configuration cfg) - { - Assert.That(_mappingField, Is.Not.Null, "Unable to find field mapping"); - var mapping = _mappingField.GetValue(cfg) as IMapping; - Assert.That(mapping, Is.Not.Null, "Unable to find mapping object"); - return mapping; - } + private static IMapping GetMapping(Configuration cfg) => (IMapping) cfg.BuildSessionFactory(); private static void AssertSqlType(IType type, SqlType sqlType, IMapping mapping) { From ddbb0570bb1eb18911f3f83b40788cce577fed48 Mon Sep 17 00:00:00 2001 From: Alex Zaytsev Date: Mon, 7 Aug 2023 12:31:19 +1000 Subject: [PATCH 06/13] Refactoring --- src/NHibernate/Cfg/Configuration.cs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/NHibernate/Cfg/Configuration.cs b/src/NHibernate/Cfg/Configuration.cs index c40cd3ff2ba..6f4a63bab6d 100644 --- a/src/NHibernate/Cfg/Configuration.cs +++ b/src/NHibernate/Cfg/Configuration.cs @@ -284,6 +284,11 @@ public virtual IMapping BuildMapping() return new Mapping(this); } + private IMapping BuildMapping(Dialect.Dialect dialect) + { + return new StaticDialectMappingWrapper(BuildMapping(), dialect); + } + /// /// Create a new Configuration object. /// @@ -922,9 +927,7 @@ public static bool IncludeAction(SchemaAction actionsSource, SchemaAction includ /// public string[] GenerateSchemaCreationScript(Dialect.Dialect dialect) { - var m = BuildMapping(); - var mapping = new StaticDialectMappingWrapper(m, dialect); - + var mapping = BuildMapping(dialect); SecondPassCompile(); var defaultCatalog = GetQuotedDefaultCatalog(dialect); @@ -991,7 +994,7 @@ public string[] GenerateSchemaCreationScript(Dialect.Dialect dialect) return script.ToArray(); } - + private void Validate(IMapping mapping) { ValidateEntities(mapping); @@ -1293,9 +1296,8 @@ public ISessionFactory BuildSessionFactory() // at each access. The dialect does not change while building a session factory. // It furthermore allows some hack on NHibernate.Spatial side to go on working, // See nhibernate/NHibernate.Spatial#104 - var m = BuildMapping(); var settings = BuildSettings(); - var mapping = new StaticDialectMappingWrapper(m, settings.Dialect); + var mapping = BuildMapping(settings.Dialect); ConfigureProxyFactoryFactory(); SecondPassCompile(); Validate(mapping); @@ -2337,8 +2339,7 @@ private static T[] AppendListeners(T[] existing, T[] listenersToAdd) /// public string[] GenerateSchemaUpdateScript(Dialect.Dialect dialect, IDatabaseMetadata databaseMetadata) { - var m = BuildMapping(); - var mapping = new StaticDialectMappingWrapper(m, dialect); + var mapping = BuildMapping(dialect); SecondPassCompile(); var defaultCatalog = GetQuotedDefaultCatalog(dialect); @@ -2419,8 +2420,7 @@ public string[] GenerateSchemaUpdateScript(Dialect.Dialect dialect, IDatabaseMet public void ValidateSchema(Dialect.Dialect dialect, IDatabaseMetadata databaseMetadata) { - var m = BuildMapping(); - var mapping = new StaticDialectMappingWrapper(m, dialect); + var mapping = BuildMapping(dialect); SecondPassCompile(); var defaultCatalog = GetQuotedDefaultCatalog(dialect); From bfb30a3e27a838c5c03524f74381afc2a0de3199 Mon Sep 17 00:00:00 2001 From: Alex Zaytsev Date: Mon, 7 Aug 2023 12:46:26 +1000 Subject: [PATCH 07/13] Obsolete BuildMapping method --- src/NHibernate/Cfg/Configuration.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/NHibernate/Cfg/Configuration.cs b/src/NHibernate/Cfg/Configuration.cs index 6f4a63bab6d..4c0bf71be23 100644 --- a/src/NHibernate/Cfg/Configuration.cs +++ b/src/NHibernate/Cfg/Configuration.cs @@ -279,6 +279,8 @@ protected Configuration(SettingsFactory settingsFactory) Reset(); } + // Since v5.5 + [Obsolete("Use BuildSessionFactory to obtain a new ISessionFactory instance instead.")] public virtual IMapping BuildMapping() { return new Mapping(this); @@ -286,7 +288,10 @@ public virtual IMapping BuildMapping() private IMapping BuildMapping(Dialect.Dialect dialect) { - return new StaticDialectMappingWrapper(BuildMapping(), dialect); +#pragma warning disable CS0618 + var mapping = BuildMapping(); +#pragma warning restore CS0618 + return new StaticDialectMappingWrapper(mapping, dialect); } /// From 02052aff16ab1e48e543d0a057cc2eb1590524cd Mon Sep 17 00:00:00 2001 From: Alex Zaytsev Date: Mon, 7 Aug 2023 12:57:08 +1000 Subject: [PATCH 08/13] Oops --- src/NHibernate/Cfg/Configuration.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/NHibernate/Cfg/Configuration.cs b/src/NHibernate/Cfg/Configuration.cs index 4c0bf71be23..5bc999a9073 100644 --- a/src/NHibernate/Cfg/Configuration.cs +++ b/src/NHibernate/Cfg/Configuration.cs @@ -123,7 +123,10 @@ public void GetObjectData(SerializationInfo info, StreamingContext context) { ConfigureProxyFactoryFactory(); SecondPassCompile(); - Validate(BuildMapping()); +#pragma warning disable CS0618 + var mapping = BuildMapping(); +#pragma warning restore CS0618 + Validate(mapping); info.AddValue("entityNotFoundDelegate", EntityNotFoundDelegate); From 639040054c7b5a603320dab6b885f4e73313c36e Mon Sep 17 00:00:00 2001 From: Alex Zaytsev Date: Mon, 7 Aug 2023 13:43:52 +1000 Subject: [PATCH 09/13] Remove validation on serialization --- src/NHibernate/Cfg/Configuration.cs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/NHibernate/Cfg/Configuration.cs b/src/NHibernate/Cfg/Configuration.cs index 5bc999a9073..c686f3b6233 100644 --- a/src/NHibernate/Cfg/Configuration.cs +++ b/src/NHibernate/Cfg/Configuration.cs @@ -123,10 +123,6 @@ public void GetObjectData(SerializationInfo info, StreamingContext context) { ConfigureProxyFactoryFactory(); SecondPassCompile(); -#pragma warning disable CS0618 - var mapping = BuildMapping(); -#pragma warning restore CS0618 - Validate(mapping); info.AddValue("entityNotFoundDelegate", EntityNotFoundDelegate); From 9f818607de1d0aaad78153d57f87d1ea8dd44d38 Mon Sep 17 00:00:00 2001 From: Alex Zaytsev Date: Mon, 14 Aug 2023 21:09:35 +1000 Subject: [PATCH 10/13] Code review changes --- src/NHibernate/Cfg/Configuration.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/NHibernate/Cfg/Configuration.cs b/src/NHibernate/Cfg/Configuration.cs index c686f3b6233..1da757ea504 100644 --- a/src/NHibernate/Cfg/Configuration.cs +++ b/src/NHibernate/Cfg/Configuration.cs @@ -235,7 +235,7 @@ public bool HasNonIdentifierPropertyNamedId(string className) } public Dialect.Dialect Dialect => - throw new InvalidOperationException("The dialect is not ready at this stage of the configuration."); + NHibernate.Dialect.Dialect.GetDialect(configuration.Properties); } [Serializable] @@ -285,7 +285,7 @@ public virtual IMapping BuildMapping() return new Mapping(this); } - private IMapping BuildMapping(Dialect.Dialect dialect) + public virtual IMapping BuildMapping(Dialect.Dialect dialect) { #pragma warning disable CS0618 var mapping = BuildMapping(); From 13cf5403a1ba52b5aa1430f3d9c7a43571302449 Mon Sep 17 00:00:00 2001 From: Alex Zaytsev Date: Mon, 14 Aug 2023 21:14:20 +1000 Subject: [PATCH 11/13] Remove whitespace churn --- src/NHibernate/Cfg/Configuration.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NHibernate/Cfg/Configuration.cs b/src/NHibernate/Cfg/Configuration.cs index a0c2523cf73..cd46df5214a 100644 --- a/src/NHibernate/Cfg/Configuration.cs +++ b/src/NHibernate/Cfg/Configuration.cs @@ -999,7 +999,7 @@ public string[] GenerateSchemaCreationScript(Dialect.Dialect dialect) return script.ToArray(); } - + private void Validate(IMapping mapping) { ValidateEntities(mapping); From 16a9d50dc1580d372f1765cc4ce4c34004b344f8 Mon Sep 17 00:00:00 2001 From: Alex Zaytsev Date: Mon, 14 Aug 2023 21:16:07 +1000 Subject: [PATCH 12/13] Encapsulate StaticDialectMappingWrapper instantiation --- src/NHibernate/Cfg/Configuration.cs | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/src/NHibernate/Cfg/Configuration.cs b/src/NHibernate/Cfg/Configuration.cs index cd46df5214a..3472050684b 100644 --- a/src/NHibernate/Cfg/Configuration.cs +++ b/src/NHibernate/Cfg/Configuration.cs @@ -939,12 +939,11 @@ public string[] GenerateSchemaCreationScript(Dialect.Dialect dialect) var script = new List(); - var staticDialectMapping = new StaticDialectMappingWrapper(mapping, dialect); foreach (var table in TableMappings) { if (table.IsPhysicalTable && IncludeAction(table.SchemaActions, SchemaAction.Export)) { - script.Add(table.SqlCreateString(dialect, staticDialectMapping, defaultCatalog, defaultSchema)); + script.Add(table.SqlCreateString(dialect, mapping, defaultCatalog, defaultSchema)); script.AddRange(table.SqlCommentStrings(dialect, defaultCatalog, defaultSchema)); } } @@ -957,7 +956,7 @@ public string[] GenerateSchemaCreationScript(Dialect.Dialect dialect) { foreach (var uk in table.UniqueKeyIterator) { - string constraintString = uk.SqlCreateString(dialect, staticDialectMapping, defaultCatalog, defaultSchema); + string constraintString = uk.SqlCreateString(dialect, mapping, defaultCatalog, defaultSchema); if (constraintString != null) { script.Add(constraintString); @@ -967,7 +966,7 @@ public string[] GenerateSchemaCreationScript(Dialect.Dialect dialect) foreach (var index in table.IndexIterator) { - script.Add(index.SqlCreateString(dialect, staticDialectMapping, defaultCatalog, defaultSchema)); + script.Add(index.SqlCreateString(dialect, mapping, defaultCatalog, defaultSchema)); } if (dialect.SupportsForeignKeyConstraintInAlterTable) @@ -976,7 +975,7 @@ public string[] GenerateSchemaCreationScript(Dialect.Dialect dialect) { if (fk.IsGenerated(dialect) && IncludeAction(fk.ReferencedTable.SchemaActions, SchemaAction.Export)) { - script.Add(fk.SqlCreateString(dialect, staticDialectMapping, defaultCatalog, defaultSchema)); + script.Add(fk.SqlCreateString(dialect, mapping, defaultCatalog, defaultSchema)); } } } @@ -993,7 +992,7 @@ public string[] GenerateSchemaCreationScript(Dialect.Dialect dialect) { if (auxDbObj.AppliesToDialect(dialect)) { - script.Add(auxDbObj.SqlCreateString(dialect, staticDialectMapping, defaultCatalog, defaultSchema)); + script.Add(auxDbObj.SqlCreateString(dialect, mapping, defaultCatalog, defaultSchema)); } } @@ -2351,7 +2350,6 @@ public string[] GenerateSchemaUpdateScript(Dialect.Dialect dialect, IDatabaseMet var defaultSchema = GetQuotedDefaultSchema(dialect); var script = new List(50); - var staticDialectMapping = new StaticDialectMappingWrapper(mapping, dialect); foreach (var table in TableMappings) { if (table.IsPhysicalTable && IncludeAction(table.SchemaActions, SchemaAction.Update)) @@ -2360,11 +2358,11 @@ public string[] GenerateSchemaUpdateScript(Dialect.Dialect dialect, IDatabaseMet table.Catalog ?? defaultCatalog, table.IsQuoted); if (tableInfo == null) { - script.Add(table.SqlCreateString(dialect, staticDialectMapping, defaultCatalog, defaultSchema)); + script.Add(table.SqlCreateString(dialect, mapping, defaultCatalog, defaultSchema)); } else { - string[] alterDDL = table.SqlAlterStrings(dialect, staticDialectMapping, tableInfo, defaultCatalog, defaultSchema); + string[] alterDDL = table.SqlAlterStrings(dialect, mapping, tableInfo, defaultCatalog, defaultSchema); script.AddRange(alterDDL); } @@ -2392,7 +2390,7 @@ public string[] GenerateSchemaUpdateScript(Dialect.Dialect dialect, IDatabaseMet && (!(dialect is MySQLDialect) || tableInfo.GetIndexMetadata(fk.Name) == null)); if (create) { - script.Add(fk.SqlCreateString(dialect, staticDialectMapping, defaultCatalog, defaultSchema)); + script.Add(fk.SqlCreateString(dialect, mapping, defaultCatalog, defaultSchema)); } } } @@ -2402,7 +2400,7 @@ public string[] GenerateSchemaUpdateScript(Dialect.Dialect dialect, IDatabaseMet { if (tableInfo == null || tableInfo.GetIndexMetadata(index.Name) == null) { - script.Add(index.SqlCreateString(dialect, staticDialectMapping, defaultCatalog, defaultSchema)); + script.Add(index.SqlCreateString(dialect, mapping, defaultCatalog, defaultSchema)); } } } @@ -2429,7 +2427,6 @@ public void ValidateSchema(Dialect.Dialect dialect, IDatabaseMetadata databaseMe var mapping = BuildMapping(dialect); SecondPassCompile(); - var staticDialectMapping = new StaticDialectMappingWrapper(mapping, dialect); var defaultCatalog = GetQuotedDefaultCatalog(dialect); var defaultSchema = GetQuotedDefaultSchema(dialect); @@ -2456,7 +2453,7 @@ public void ValidateSchema(Dialect.Dialect dialect, IDatabaseMetadata databaseMe } else { - validationErrors.AddRange(table.ValidateColumns(dialect, staticDialectMapping, tableInfo)); + validationErrors.AddRange(table.ValidateColumns(dialect, mapping, tableInfo)); } } } From 08e43543d9c1db10c46934d068a051c1d9288f9b Mon Sep 17 00:00:00 2001 From: Alex Zaytsev Date: Tue, 15 Aug 2023 09:25:01 +1000 Subject: [PATCH 13/13] Improve obsolescence message --- src/NHibernate/Cfg/Configuration.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NHibernate/Cfg/Configuration.cs b/src/NHibernate/Cfg/Configuration.cs index 3472050684b..13e3ab51bb6 100644 --- a/src/NHibernate/Cfg/Configuration.cs +++ b/src/NHibernate/Cfg/Configuration.cs @@ -279,7 +279,7 @@ protected Configuration(SettingsFactory settingsFactory) } // Since v5.5 - [Obsolete("Use BuildSessionFactory to obtain a new ISessionFactory instance instead.")] + [Obsolete("Use BuildMapping(Dialect.Dialect) instead.")] public virtual IMapping BuildMapping() { return new Mapping(this);