Skip to content

Commit 090f834

Browse files
hazzikJeff Hagen
andauthored
Allow specification of <sql-*> in subclasses (#753)
Fixes #41 +semver:fix --------- Co-authored-by: Jeff Hagen <[email protected]>
1 parent 43c123d commit 090f834

File tree

2 files changed

+57
-2
lines changed

2 files changed

+57
-2
lines changed

src/FluentNHibernate.Testing/DomainModel/Mapping/StoredProcedureTests.cs

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
using NUnit.Framework;
1+
using System;
2+
using FluentNHibernate.Mapping;
3+
using NUnit.Framework;
24

35
namespace FluentNHibernate.Testing.DomainModel.Mapping;
46

@@ -56,4 +58,55 @@ public void Can_specify_sql_delete_all()
5658
.Element("class/sql-delete-all")
5759
.ValueEquals("Delete ABC");
5860
}
61+
62+
[Test]
63+
public void Can_specify_sql_insert_for_subclass()
64+
{
65+
var check = "Insert ABC";
66+
CreateMappingTester(x => x.SqlInsert(check))
67+
.Element("//subclass/sql-insert")
68+
.ValueEquals(check);
69+
}
70+
71+
[Test]
72+
public void Can_specify_sql_update_for_subclass()
73+
{
74+
var check = "Update ABC";
75+
CreateMappingTester(x => x.SqlUpdate(check))
76+
.Element("//subclass/sql-update")
77+
.ValueEquals(check);
78+
}
79+
80+
[Test]
81+
public void Can_specify_sql_delete_for_subclass()
82+
{
83+
var check = "Delete ABC";
84+
CreateMappingTester(x => x.SqlDelete(check))
85+
.Element("//subclass/sql-delete")
86+
.ValueEquals(check);
87+
}
88+
89+
[Test]
90+
public void Can_specify_sql_delete_all_for_subclass()
91+
{
92+
var check = "Delete ABC";
93+
CreateMappingTester(x => x.SqlDeleteAll(check))
94+
.Element("//subclass/sql-delete-all")
95+
.ValueEquals(check);
96+
}
97+
98+
private MappingTester<MappedObject> CreateMappingTester(Action<SubclassMap<MappedObjectSubclass>> subclassMap)
99+
{
100+
return new MappingTester<MappedObject>()
101+
.SubClassMapping<MappedObjectSubclass>(sc =>
102+
{
103+
sc.Map(x => x.SubclassProperty);
104+
subclassMap.Invoke(sc);
105+
})
106+
.ForMapping(m =>
107+
{
108+
m.DiscriminateSubClassesOnColumn("test");
109+
m.Id(x => x.Id);
110+
});
111+
}
59112
}

src/FluentNHibernate/Mapping/SubclassMap.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -327,9 +327,11 @@ SubclassMapping IIndeterminateSubclassMappingProvider.GetSubclassMapping(Subclas
327327
case MappingProviderStore.ProviderType.Any:
328328
mapping.AddAny(((IAnyMappingProvider)mappingProviderObj).GetAnyMapping());
329329
break;
330+
case MappingProviderStore.ProviderType.StoredProcedure:
331+
mapping.AddStoredProcedure(((IStoredProcedureMappingProvider)mappingProviderObj).GetStoredProcedureMapping());
332+
break;
330333
case MappingProviderStore.ProviderType.Subclass:
331334
case MappingProviderStore.ProviderType.Filter:
332-
case MappingProviderStore.ProviderType.StoredProcedure:
333335
case MappingProviderStore.ProviderType.Join:
334336
case MappingProviderStore.ProviderType.Identity:
335337
case MappingProviderStore.ProviderType.CompositeId:

0 commit comments

Comments
 (0)