diff --git a/src/NHibernate/Cfg/Configuration.cs b/src/NHibernate/Cfg/Configuration.cs index 6b52f6008ba..4055114a3fd 100644 --- a/src/NHibernate/Cfg/Configuration.cs +++ b/src/NHibernate/Cfg/Configuration.cs @@ -246,10 +246,14 @@ private class StaticDialectMappingWrapper : IMapping { private readonly IMapping _mapping; - public StaticDialectMappingWrapper(IMapping mapping) + public StaticDialectMappingWrapper(IMapping mapping): this(mapping, mapping.Dialect) + { + } + + public StaticDialectMappingWrapper(IMapping mapping, Dialect.Dialect dialect) { _mapping = mapping; - Dialect = mapping.Dialect; + Dialect = dialect; } public IType GetIdentifierType(string className) @@ -941,11 +945,12 @@ 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, mapping, defaultCatalog, defaultSchema)); + script.Add(table.SqlCreateString(dialect, staticDialectMapping, defaultCatalog, defaultSchema)); script.AddRange(table.SqlCommentStrings(dialect, defaultCatalog, defaultSchema)); } } @@ -958,7 +963,7 @@ public string[] GenerateSchemaCreationScript(Dialect.Dialect dialect) { foreach (var uk in table.UniqueKeyIterator) { - string constraintString = uk.SqlCreateString(dialect, mapping, defaultCatalog, defaultSchema); + string constraintString = uk.SqlCreateString(dialect, staticDialectMapping, defaultCatalog, defaultSchema); if (constraintString != null) { script.Add(constraintString); @@ -968,7 +973,7 @@ public string[] GenerateSchemaCreationScript(Dialect.Dialect dialect) foreach (var index in table.IndexIterator) { - script.Add(index.SqlCreateString(dialect, mapping, defaultCatalog, defaultSchema)); + script.Add(index.SqlCreateString(dialect, staticDialectMapping, defaultCatalog, defaultSchema)); } if (dialect.SupportsForeignKeyConstraintInAlterTable) @@ -977,7 +982,7 @@ public string[] GenerateSchemaCreationScript(Dialect.Dialect dialect) { if (fk.IsGenerated(dialect) && IncludeAction(fk.ReferencedTable.SchemaActions, SchemaAction.Export)) { - script.Add(fk.SqlCreateString(dialect, mapping, defaultCatalog, defaultSchema)); + script.Add(fk.SqlCreateString(dialect, staticDialectMapping, defaultCatalog, defaultSchema)); } } } @@ -994,7 +999,7 @@ public string[] GenerateSchemaCreationScript(Dialect.Dialect dialect) { if (auxDbObj.AppliesToDialect(dialect)) { - script.Add(auxDbObj.SqlCreateString(dialect, mapping, defaultCatalog, defaultSchema)); + script.Add(auxDbObj.SqlCreateString(dialect, staticDialectMapping, defaultCatalog, defaultSchema)); } } @@ -2364,6 +2369,7 @@ 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)) @@ -2372,11 +2378,11 @@ public string[] GenerateSchemaUpdateScript(Dialect.Dialect dialect, IDatabaseMet table.Catalog ?? defaultCatalog, table.IsQuoted); if (tableInfo == null) { - script.Add(table.SqlCreateString(dialect, mapping, defaultCatalog, defaultSchema)); + script.Add(table.SqlCreateString(dialect, staticDialectMapping, defaultCatalog, defaultSchema)); } else { - string[] alterDDL = table.SqlAlterStrings(dialect, mapping, tableInfo, defaultCatalog, defaultSchema); + string[] alterDDL = table.SqlAlterStrings(dialect, staticDialectMapping, tableInfo, defaultCatalog, defaultSchema); script.AddRange(alterDDL); } @@ -2404,7 +2410,7 @@ public string[] GenerateSchemaUpdateScript(Dialect.Dialect dialect, IDatabaseMet && (!(dialect is MySQLDialect) || tableInfo.GetIndexMetadata(fk.Name) == null)); if (create) { - script.Add(fk.SqlCreateString(dialect, mapping, defaultCatalog, defaultSchema)); + script.Add(fk.SqlCreateString(dialect, staticDialectMapping, defaultCatalog, defaultSchema)); } } } @@ -2414,7 +2420,7 @@ public string[] GenerateSchemaUpdateScript(Dialect.Dialect dialect, IDatabaseMet { if (tableInfo == null || tableInfo.GetIndexMetadata(index.Name) == null) { - script.Add(index.SqlCreateString(dialect, mapping, defaultCatalog, defaultSchema)); + script.Add(index.SqlCreateString(dialect, staticDialectMapping, defaultCatalog, defaultSchema)); } } } @@ -2440,6 +2446,7 @@ public void ValidateSchema(Dialect.Dialect dialect, IDatabaseMetadata databaseMe { SecondPassCompile(); + var staticDialectMapping = new StaticDialectMappingWrapper(mapping, dialect); var defaultCatalog = GetQuotedDefaultCatalog(dialect); var defaultSchema = GetQuotedDefaultSchema(dialect); @@ -2466,7 +2473,7 @@ public void ValidateSchema(Dialect.Dialect dialect, IDatabaseMetadata databaseMe } else { - validationErrors.AddRange(table.ValidateColumns(dialect, mapping, tableInfo)); + validationErrors.AddRange(table.ValidateColumns(dialect, staticDialectMapping, tableInfo)); } } }