diff --git a/src/FluentNHibernate.Testing/ConventionsTests/Inspection/CascadeTests.cs b/src/FluentNHibernate.Testing/ConventionsTests/Inspection/CascadeTests.cs index 062cf8d88..37245b1f7 100644 --- a/src/FluentNHibernate.Testing/ConventionsTests/Inspection/CascadeTests.cs +++ b/src/FluentNHibernate.Testing/ConventionsTests/Inspection/CascadeTests.cs @@ -47,5 +47,12 @@ public void DirtyShouldHaveCorrectValue() { Cascade.SaveUpdate.ToString().ShouldEqual("save-update"); } + + [Test] + public void MergeShouldHaveCorrectValue() + { + Cascade.All.ToString().ShouldEqual("merge"); + } + } } \ No newline at end of file diff --git a/src/FluentNHibernate.Testing/DomainModel/Mapping/CascadeExpressionTester.cs b/src/FluentNHibernate.Testing/DomainModel/Mapping/CascadeExpressionTester.cs index b4c4e4b8b..debae6874 100644 --- a/src/FluentNHibernate.Testing/DomainModel/Mapping/CascadeExpressionTester.cs +++ b/src/FluentNHibernate.Testing/DomainModel/Mapping/CascadeExpressionTester.cs @@ -58,5 +58,11 @@ public void Delete_should_add_the_correct_cascade_attribute_to_the_parent_part() { A_call_to(_cascade.Delete).should_set_the_cascade_value_to("delete"); } + + [Test] + public void Merge_should_add_the_correct_cascade_attribute_to_the_parent_part() + { + A_call_to(_cascade.Merge).should_set_the_cascade_value_to("merge"); + } } } diff --git a/src/FluentNHibernate/Conventions/Helpers/DefaultCascade.cs b/src/FluentNHibernate/Conventions/Helpers/DefaultCascade.cs index 1ecb64371..87b46a269 100644 --- a/src/FluentNHibernate/Conventions/Helpers/DefaultCascade.cs +++ b/src/FluentNHibernate/Conventions/Helpers/DefaultCascade.cs @@ -31,5 +31,13 @@ public static IHibernateMappingConvention Delete() criteria => { }, instance => instance.DefaultCascade.Delete()); } + + + public static IHibernateMappingConvention Merge() + { + return new BuiltHibernateMappingConvention( + criteria => { }, + instance => instance.DefaultCascade.Merge()); + } } } \ No newline at end of file diff --git a/src/FluentNHibernate/Conventions/Inspections/Cascade.cs b/src/FluentNHibernate/Conventions/Inspections/Cascade.cs index b0dfac4fa..e338a62a9 100644 --- a/src/FluentNHibernate/Conventions/Inspections/Cascade.cs +++ b/src/FluentNHibernate/Conventions/Inspections/Cascade.cs @@ -8,6 +8,7 @@ public class Cascade public static readonly Cascade None = new Cascade("none"); public static readonly Cascade SaveUpdate = new Cascade("save-update"); public static readonly Cascade Delete = new Cascade("delete"); + public static readonly Cascade Merge = new Cascade("merge"); private readonly string value; diff --git a/src/FluentNHibernate/Conventions/Instances/CascadeInstance.cs b/src/FluentNHibernate/Conventions/Instances/CascadeInstance.cs index 26c3f62cc..05aab7575 100644 --- a/src/FluentNHibernate/Conventions/Instances/CascadeInstance.cs +++ b/src/FluentNHibernate/Conventions/Instances/CascadeInstance.cs @@ -30,5 +30,10 @@ public void Delete() { setter("delete"); } + + public void Merge() + { + setter("merge"); + } } } \ No newline at end of file diff --git a/src/FluentNHibernate/Conventions/Instances/ICascadeInstance.cs b/src/FluentNHibernate/Conventions/Instances/ICascadeInstance.cs index d4e340db0..98ed6dcd4 100644 --- a/src/FluentNHibernate/Conventions/Instances/ICascadeInstance.cs +++ b/src/FluentNHibernate/Conventions/Instances/ICascadeInstance.cs @@ -8,5 +8,6 @@ public interface ICascadeInstance void None(); void SaveUpdate(); void Delete(); + void Merge(); } } \ No newline at end of file diff --git a/src/FluentNHibernate/Mapping/CascadeExpression.cs b/src/FluentNHibernate/Mapping/CascadeExpression.cs index 7bb15c187..aa69a9510 100644 --- a/src/FluentNHibernate/Mapping/CascadeExpression.cs +++ b/src/FluentNHibernate/Mapping/CascadeExpression.cs @@ -48,5 +48,16 @@ public TParent Delete() setter("delete"); return parent; } + + /// + /// Cascade deletes + /// + public TParent Merge() + { + setter("merge"); + return parent; + } + + } }