diff --git a/src/FluentNHibernate.Testing/DomainModel/Mapping/StoredProcedureTests.cs b/src/FluentNHibernate.Testing/DomainModel/Mapping/StoredProcedureTests.cs index 1f40610eb..d9e9ceb4e 100644 --- a/src/FluentNHibernate.Testing/DomainModel/Mapping/StoredProcedureTests.cs +++ b/src/FluentNHibernate.Testing/DomainModel/Mapping/StoredProcedureTests.cs @@ -1,4 +1,6 @@ -using NUnit.Framework; +using System; +using FluentNHibernate.Mapping; +using NUnit.Framework; namespace FluentNHibernate.Testing.DomainModel.Mapping; @@ -56,4 +58,55 @@ public void Can_specify_sql_delete_all() .Element("class/sql-delete-all") .ValueEquals("Delete ABC"); } + + [Test] + public void Can_specify_sql_insert_for_subclass() + { + var check = "Insert ABC"; + CreateMappingTester(x => x.SqlInsert(check)) + .Element("//subclass/sql-insert") + .ValueEquals(check); + } + + [Test] + public void Can_specify_sql_update_for_subclass() + { + var check = "Update ABC"; + CreateMappingTester(x => x.SqlUpdate(check)) + .Element("//subclass/sql-update") + .ValueEquals(check); + } + + [Test] + public void Can_specify_sql_delete_for_subclass() + { + var check = "Delete ABC"; + CreateMappingTester(x => x.SqlDelete(check)) + .Element("//subclass/sql-delete") + .ValueEquals(check); + } + + [Test] + public void Can_specify_sql_delete_all_for_subclass() + { + var check = "Delete ABC"; + CreateMappingTester(x => x.SqlDeleteAll(check)) + .Element("//subclass/sql-delete") + .ValueEquals(check); + } + + private MappingTester CreateMappingTester(Action> subclassMap) + { + return new MappingTester() + .SubClassMapping(sc => + { + sc.Map(x => x.SubclassProperty); + subclassMap.Invoke(sc); + }) + .ForMapping(m => + { + m.DiscriminateSubClassesOnColumn("test"); + m.Id(x => x.Id); + }); + } } diff --git a/src/FluentNHibernate/Mapping/SubclassMap.cs b/src/FluentNHibernate/Mapping/SubclassMap.cs index 058624d1e..0e279b554 100644 --- a/src/FluentNHibernate/Mapping/SubclassMap.cs +++ b/src/FluentNHibernate/Mapping/SubclassMap.cs @@ -327,9 +327,11 @@ SubclassMapping IIndeterminateSubclassMappingProvider.GetSubclassMapping(Subclas case MappingProviderStore.ProviderType.Any: mapping.AddAny(((IAnyMappingProvider)mappingProviderObj).GetAnyMapping()); break; + case MappingProviderStore.ProviderType.StoredProcedure: + mapping.AddStoredProcedure(((IStoredProcedureMappingProvider)mappingProviderObj).GetStoredProcedureMapping()); + break; case MappingProviderStore.ProviderType.Subclass: case MappingProviderStore.ProviderType.Filter: - case MappingProviderStore.ProviderType.StoredProcedure: case MappingProviderStore.ProviderType.Join: case MappingProviderStore.ProviderType.Identity: case MappingProviderStore.ProviderType.CompositeId: