Skip to content

Commit

Permalink
Add join support for Automapping overrides in SubClasses (#467)
Browse files Browse the repository at this point in the history
Co-authored-by: Grzegorz Bańczak <gbanczak@gmail.com>
  • Loading branch information
hazzik and banias committed Sep 18, 2020
1 parent 207f6e4 commit 5d972ea
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 3 deletions.
24 changes: 24 additions & 0 deletions src/FluentNHibernate.Specs/Automapping/OverrideSpecs.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,30 @@ public class when_using_an_automapping_override_to_create_a_join
static ClassMapping mapping;
}

public class when_using_an_automapping_override_to_specify_a_discriminators_and_join_on_subclass
{
private Establish context = () =>
model = AutoMap.Source(new StubTypeSource(typeof (Parent), typeof (Child)))
.Override<Parent>(map =>
map.DiscriminateSubClassesOnColumn("type"))
.Override<Child>(map => map.Join("table", part => { }));

private Because of = () =>
mapping = model.BuildMappingFor<Parent>();

It should_not_create_the_join_mapping = () =>
mapping.Joins.Should().BeEmpty();

It should_map_the_discriminator = () =>
mapping.Discriminator.Should().NotBeNull();

It should_map_subclasses_as_joined_subclasses = () =>
mapping.Subclasses.Should().OnlyContain(x => x.Joins.Any());

static AutoPersistenceModel model;
static ClassMapping mapping;
}

public class when_using_an_automapping_override_to_specify_a_discriminator
{
Establish context = () =>
Expand Down
6 changes: 3 additions & 3 deletions src/FluentNHibernate/Automapping/AutoMapping.cs
Original file line number Diff line number Diff line change
Expand Up @@ -61,12 +61,12 @@ void IAutoClasslike.AlterModel(ClassMappingBase mapping)
if (Cache.IsDirty)
classMapping.Set(x => x.Cache, Layer.Defaults, ((ICacheMappingProvider)Cache).GetCacheMapping());

foreach (var join in providers.Joins)
classMapping.AddJoin(join.GetJoinMapping());

classMapping.Set(x => x.Tuplizer, Layer.Defaults, providers.TuplizerMapping);
}

foreach (var join in providers.Joins)
mapping.AddOrReplaceJoin(join.GetJoinMapping());

foreach (var property in providers.Properties)
mapping.AddOrReplaceProperty(property.GetPropertyMapping());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,11 @@ public void AddJoin(JoinMapping mapping)
mappedMembers.AddJoin(mapping);
}

public void AddOrReplaceJoin(JoinMapping mapping)
{
mappedMembers.AddOrReplaceJoin(mapping);
}

public void AddFilter(FilterMapping mapping)
{
mappedMembers.AddFilter(mapping);
Expand Down
5 changes: 5 additions & 0 deletions src/FluentNHibernate/MappingModel/MappedMembers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,11 @@ public void AddJoin(JoinMapping mapping)
AddMapping(mapping, MappingType.Join);
}

public void AddOrReplaceJoin(JoinMapping mapping)
{
AddOrReplaceMapping(mapping, MappingType.Join, x => x.TableName == mapping.TableName);
}

public void AddFilter(FilterMapping mapping)
{
if (Filters.Any(x => x.Name == mapping.Name))
Expand Down

0 comments on commit 5d972ea

Please sign in to comment.