Skip to content

Commit e9e574d

Browse files
authored
Add DiscriminatorValue override to AutoMapping (#469)
+semver:feature
1 parent 7729277 commit e9e574d

File tree

2 files changed

+29
-18
lines changed

2 files changed

+29
-18
lines changed

src/FluentNHibernate.Testing/AutoMapping/Apm/AutoPersistenceModelTests.Overrides.cs

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -255,11 +255,9 @@ public void JoinedSubclassOverrideShouldOverrideExistingReferencesAny()
255255
[Test]
256256
public void SubclassOverrideShouldOverrideExistingProperty()
257257
{
258-
#pragma warning disable 612,618
259258
var autoMapper = AutoMap.AssemblyOf<ExampleClass>()
260259
.Where(t => t.Namespace == "FluentNHibernate.Automapping.TestFixtures")
261-
.Setup(x => x.IsDiscriminated = type => true)
262-
#pragma warning restore 612,618
260+
.Override<ExampleClass>(t => t.DiscriminateSubClassesOnColumn("Discriminator"))
263261
.Override<ExampleInheritedClass>(c => c.Map(x => x.ExampleProperty).Column("test"));
264262

265263
new AutoMappingTester<ExampleClass>(autoMapper)
@@ -290,11 +288,9 @@ public void SubclassOverrideShouldOverrideExistingComponent()
290288
[Test]
291289
public void SubclassOverrideShouldOverrideExistingHasMany()
292290
{
293-
#pragma warning disable 612,618
294291
var autoMapper = AutoMap.AssemblyOf<ExampleClass>()
295292
.Where(t => t.Namespace == "FluentNHibernate.Automapping.TestFixtures")
296-
.Setup(x => x.IsDiscriminated = type => true)
297-
#pragma warning restore 612,618
293+
.Override<ExampleClass>(t => t.DiscriminateSubClassesOnColumn("Discriminator"))
298294
.Override<ExampleInheritedClass>(m => m.HasMany(x => x.Children).Inverse());
299295

300296
new AutoMappingTester<ExampleClass>(autoMapper)
@@ -304,11 +300,9 @@ public void SubclassOverrideShouldOverrideExistingHasMany()
304300
[Test]
305301
public void SubclassOverrideShouldOverrideExistingHasManyToMany()
306302
{
307-
#pragma warning disable 612,618
308303
var autoMapper = AutoMap.AssemblyOf<ExampleClass>()
309304
.Where(t => t.Namespace == "FluentNHibernate.Automapping.TestFixtures")
310-
.Setup(x => x.IsDiscriminated = type => true)
311-
#pragma warning restore 612,618
305+
.Override<ExampleClass>(t => t.DiscriminateSubClassesOnColumn("Discriminator"))
312306
.Override<ExampleInheritedClass>(m => m.HasManyToMany(x => x.Children).Inverse());
313307

314308
new AutoMappingTester<ExampleClass>(autoMapper)
@@ -319,11 +313,9 @@ public void SubclassOverrideShouldOverrideExistingHasManyToMany()
319313
[Test]
320314
public void SubclassOverrideShouldOverrideExistingHasOne()
321315
{
322-
#pragma warning disable 612,618
323316
var autoMapper = AutoMap.AssemblyOf<ExampleClass>()
324317
.Where(t => t.Namespace == "FluentNHibernate.Automapping.TestFixtures")
325-
.Setup(x => x.IsDiscriminated = type => true)
326-
#pragma warning restore 612,618
318+
.Override<ExampleClass>(t => t.DiscriminateSubClassesOnColumn("Discriminator"))
327319
.Override<ExampleInheritedClass>(m => m.HasOne(x => x.Parent));
328320

329321
new AutoMappingTester<ExampleClass>(autoMapper)
@@ -334,11 +326,9 @@ public void SubclassOverrideShouldOverrideExistingHasOne()
334326
[Test]
335327
public void SubclassOverrideShouldOverrideExistingReferences()
336328
{
337-
#pragma warning disable 612, 618
338329
var autoMapper = AutoMap.AssemblyOf<ExampleClass>()
339330
.Where(t => t.Namespace == "FluentNHibernate.Automapping.TestFixtures")
340-
.Setup(x => x.IsDiscriminated = type => true)
341-
#pragma warning restore 612,618
331+
.Override<ExampleClass>(t => t.DiscriminateSubClassesOnColumn("Discriminator"))
342332
.Override<ExampleInheritedClass>(m => m.References(x => x.Parent).Access.Field());
343333

344334
new AutoMappingTester<ExampleClass>(autoMapper)
@@ -348,11 +338,9 @@ public void SubclassOverrideShouldOverrideExistingReferences()
348338
[Test]
349339
public void SubclassOverrideShouldOverrideExistingReferencesAny()
350340
{
351-
#pragma warning disable 612, 618
352341
var autoMapper = AutoMap.AssemblyOf<ExampleClass>()
353342
.Where(t => t.Namespace == "FluentNHibernate.Automapping.TestFixtures")
354-
.Setup(x => x.IsDiscriminated = type => true)
355-
#pragma warning restore 612,618
343+
.Override<ExampleClass>(t => t.DiscriminateSubClassesOnColumn("Discriminator"))
356344
.Override<ExampleInheritedClass>(m =>
357345
m.ReferencesAny(x => x.DictionaryChild)
358346
.EntityIdentifierColumn("one")
@@ -363,5 +351,18 @@ public void SubclassOverrideShouldOverrideExistingReferencesAny()
363351
.Element("//subclass/any[@name='DictionaryChild']").Exists()
364352
.Element("//subclass/map[@name='DictionaryChild']").DoesntExist();
365353
}
354+
355+
356+
[Test]
357+
public void SubclassOverrideShouldOverrideDiscriminatorValue()
358+
{
359+
var autoMapper = AutoMap.AssemblyOf<ExampleClass>()
360+
.Where(t => t.Namespace == "FluentNHibernate.Automapping.TestFixtures")
361+
.Override<ExampleClass>(t => t.DiscriminateSubClassesOnColumn("Discriminator"))
362+
.Override<ExampleInheritedClass>(m => m.DiscriminatorValue(1));
363+
364+
new AutoMappingTester<ExampleClass>(autoMapper)
365+
.Element("//subclass").HasAttribute("discriminator-value", "1");
366+
}
366367
}
367368
}

src/FluentNHibernate/Automapping/AutoMapping.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,5 +237,15 @@ public void KeyColumn(string column)
237237

238238
attributes.Set("Key", Layer.UserSupplied, key);
239239
}
240+
241+
/// <summary>
242+
/// Set the discriminator value, if this entity is in a table-per-class-hierarchy
243+
/// mapping strategy.
244+
/// </summary>
245+
/// <param name="discriminatorValue">Discriminator value</param>
246+
public void DiscriminatorValue(object discriminatorValue)
247+
{
248+
attributes.Set("DiscriminatorValue", Layer.UserSupplied, discriminatorValue);
249+
}
240250
}
241251
}

0 commit comments

Comments
 (0)