Skip to content

Commit 8cbcda8

Browse files
committed
Add compatibility changes to prevent Dialect properties from being null
1 parent 3ed2109 commit 8cbcda8

File tree

5 files changed

+24
-22
lines changed

5 files changed

+24
-22
lines changed

src/NHibernate/Cfg/BindMappingEventArgs.cs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,16 @@
33

44
namespace NHibernate.Cfg
55
{
6-
public class BindMappingEventArgs: EventArgs
6+
public class BindMappingEventArgs : EventArgs
77
{
8-
[Obsolete("Please use constructor without a dialect parameter.", true)]
9-
public BindMappingEventArgs(Dialect.Dialect dialect, HbmMapping mapping, string fileName) : this(mapping, fileName)
8+
//6.0 TODO: Remove
9+
internal Lazy<Dialect.Dialect> LazyDialect;
10+
11+
[Obsolete("Please use constructor without a dialect parameter.")]
12+
public BindMappingEventArgs(Dialect.Dialect dialect, HbmMapping mapping, string fileName)
13+
: this(mapping, fileName)
1014
{
11-
Dialect = dialect;
15+
LazyDialect = new Lazy<Dialect.Dialect>(() => dialect);
1216
}
1317

1418
public BindMappingEventArgs(HbmMapping mapping, string fileName)
@@ -18,8 +22,8 @@ public BindMappingEventArgs(HbmMapping mapping, string fileName)
1822
}
1923

2024
//Since v5.2
21-
[Obsolete("This property will be removed in a future version.", true)]
22-
public Dialect.Dialect Dialect { get; }
25+
[Obsolete("This property will be removed in a future version.")]
26+
public Dialect.Dialect Dialect => LazyDialect.Value;
2327
public HbmMapping Mapping { get; }
2428
public string FileName { get; }
2529
}

src/NHibernate/Cfg/Configuration.cs

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -518,11 +518,12 @@ public void AddDeserializedMapping(HbmMapping mappingDocument, string documentFi
518518
}
519519
try
520520
{
521-
OnBeforeBindMapping(new BindMappingEventArgs(mappingDocument, documentFileName));
522-
Mappings mappings = CreateMappings();
523-
521+
var dialect = new Lazy<Dialect.Dialect>(() => Dialect.Dialect.GetDialect(properties));
522+
OnBeforeBindMapping(new BindMappingEventArgs(mappingDocument, documentFileName) {LazyDialect = dialect});
523+
var mappings = CreateMappings();
524+
mappings.LazyDialect = dialect;
524525
new MappingRootBinder(mappings).Bind(mappingDocument);
525-
OnAfterBindMapping(new BindMappingEventArgs(mappingDocument, documentFileName));
526+
OnAfterBindMapping(new BindMappingEventArgs(mappingDocument, documentFileName) {LazyDialect = dialect});
526527
}
527528
catch (Exception e)
528529
{
@@ -564,13 +565,11 @@ private void OnBeforeBindMapping(BindMappingEventArgs bindMappingEventArgs)
564565
[Obsolete("Please use overload without a dialect parameter.")]
565566
public Mappings CreateMappings(Dialect.Dialect dialect)
566567
{
567-
return CreateMappings();
568+
var mappings = CreateMappings();
569+
mappings.LazyDialect = new Lazy<Dialect.Dialect>(() => dialect);
570+
return mappings;
568571
}
569572

570-
/// <summary>
571-
/// Create a new <see cref="Mappings" /> to add classes and collection
572-
/// mappings to.
573-
/// </summary>
574573
public Mappings CreateMappings()
575574
{
576575
string defaultCatalog = PropertiesHelper.GetString(Environment.DefaultCatalog, properties, null);

src/NHibernate/Cfg/ConfigurationExtensions.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ public static Configuration TypeDefinition<TDef>(this Configuration configuratio
140140
return configuration;
141141
}
142142
var mappings = configuration.CreateMappings();
143+
mappings.LazyDialect = new Lazy<Dialect.Dialect>(() => Dialect.Dialect.GetDialect(configuration.Properties));
143144
mappings.AddTypeDef(tdConfiguration.Alias, typeof(TDef).AssemblyQualifiedName, tdConfiguration.Properties.ToTypeParameters());
144145
return configuration;
145146
}

src/NHibernate/Cfg/Mappings.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,9 @@ public sealed class PropertyReference
8888
/// </summary>
8989
protected internal IDictionary<string, TableDescription> tableNameBinding;
9090

91+
//6.0 TODO: Remove
92+
internal Lazy<Dialect.Dialect> LazyDialect;
93+
9194
//Since v5.2
9295
[Obsolete("Please use constructor without a dialect parameter.")]
9396
protected internal Mappings(
@@ -138,7 +141,7 @@ protected internal Mappings(
138141
defaultSchema,
139142
preferPooledValuesLo)
140143
{
141-
Dialect = dialect;
144+
LazyDialect = new Lazy<Dialect.Dialect>(() => dialect);
142145
}
143146

144147
protected internal Mappings(
@@ -235,7 +238,7 @@ public PersistentClass GetClass(string className)
235238

236239
//Since v5.2
237240
[Obsolete("This property will be removed in a future version.")]
238-
public Dialect.Dialect Dialect { get; }
241+
public Dialect.Dialect Dialect => LazyDialect.Value;
239242

240243
/// <summary>
241244
///

src/NHibernate/Cfg/XmlHbmBinding/MappingRootBinder.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,11 @@ namespace NHibernate.Cfg.XmlHbmBinding
99
{
1010
public class MappingRootBinder : Binder
1111
{
12-
//Since v5.2
13-
[Obsolete("This field will be removed in a future version.")]
14-
private readonly Dialect.Dialect dialect;
15-
1612
//Since v5.2
1713
[Obsolete("Please use constructor without a dialect parameter.")]
1814
public MappingRootBinder(Mappings mappings, Dialect.Dialect dialect)
1915
: this(mappings)
2016
{
21-
this.dialect = dialect;
2217
}
2318

2419
public MappingRootBinder(Mappings mappings)

0 commit comments

Comments
 (0)