From fad60d2c51b18a738c9270d0e00f197ae1f78acf Mon Sep 17 00:00:00 2001 From: Roman Artiukhin Date: Tue, 14 Mar 2023 10:54:03 +0200 Subject: [PATCH] MappingByCode: Support backfield property access --- .../AllPropertiesRegistrationTests.cs | 14 ++++++++++++++ .../Mapping/ByCode/IAccessorPropertyMapper.cs | 5 +++-- .../Mapping/ByCode/Impl/AccessorPropertyMapper.cs | 5 ++++- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/NHibernate.Test/MappingByCode/ExplicitMappingTests/AllPropertiesRegistrationTests.cs b/src/NHibernate.Test/MappingByCode/ExplicitMappingTests/AllPropertiesRegistrationTests.cs index 11f66934fa3..8b1c2d2a269 100644 --- a/src/NHibernate.Test/MappingByCode/ExplicitMappingTests/AllPropertiesRegistrationTests.cs +++ b/src/NHibernate.Test/MappingByCode/ExplicitMappingTests/AllPropertiesRegistrationTests.cs @@ -188,6 +188,20 @@ public void WhenMapPropertiesInTheBaseJumpedClassUsingMemberNameThenMapInInherit Assert.That(hbmClass.Properties.Select(p => p.Access).All(a => a.StartsWith("field.")), Is.True); } + [Test] + public void BackfieldAccessPropertyMapping() + { + var mapper = new ModelMapper(); + mapper.Class(mc => + { + mc.Id(x => x.Id, m => m.Access(Accessor.Backfield)); + }); + + HbmMapping mappings = mapper.CompileMappingForAllExplicitlyAddedEntities(); + HbmClass hbmClass = mappings.RootClasses[0]; + Assert.That(hbmClass.Id.access, Is.EqualTo("backfield")); + } + [Test] public void WhenMapBagWithWrongElementTypeThenThrows() { diff --git a/src/NHibernate/Mapping/ByCode/IAccessorPropertyMapper.cs b/src/NHibernate/Mapping/ByCode/IAccessorPropertyMapper.cs index 278043f853a..9c51762cd60 100644 --- a/src/NHibernate/Mapping/ByCode/IAccessorPropertyMapper.cs +++ b/src/NHibernate/Mapping/ByCode/IAccessorPropertyMapper.cs @@ -6,7 +6,8 @@ public enum Accessor Field, NoSetter, ReadOnly, - None + None, + Backfield, } public interface IAccessorPropertyMapper @@ -14,4 +15,4 @@ public interface IAccessorPropertyMapper void Access(Accessor accessor); void Access(System.Type accessorType); } -} \ No newline at end of file +} diff --git a/src/NHibernate/Mapping/ByCode/Impl/AccessorPropertyMapper.cs b/src/NHibernate/Mapping/ByCode/Impl/AccessorPropertyMapper.cs index f264dcbf55e..6bf059af9c7 100644 --- a/src/NHibernate/Mapping/ByCode/Impl/AccessorPropertyMapper.cs +++ b/src/NHibernate/Mapping/ByCode/Impl/AccessorPropertyMapper.cs @@ -92,6 +92,9 @@ public void Access(Accessor accessor) case Accessor.None: setAccessor("none"); break; + case Accessor.Backfield: + setAccessor("backfield"); + break; default: throw new ArgumentOutOfRangeException("accessor"); } @@ -136,4 +139,4 @@ private static MemberInfo GetField(System.Type type, string fieldName) return member; } } -} \ No newline at end of file +}