Skip to content

Commit 2a7a74b

Browse files
authored
MappingByCode: Support backfield property access (#3254)
Fixes #3251
1 parent 116d34a commit 2a7a74b

File tree

3 files changed

+21
-3
lines changed

3 files changed

+21
-3
lines changed

src/NHibernate.Test/MappingByCode/ExplicitMappingTests/AllPropertiesRegistrationTests.cs

+14
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,20 @@ public void WhenMapPropertiesInTheBaseJumpedClassUsingMemberNameThenMapInInherit
188188
Assert.That(hbmClass.Properties.Select(p => p.Access).All(a => a.StartsWith("field.")), Is.True);
189189
}
190190

191+
[Test]
192+
public void BackfieldAccessPropertyMapping()
193+
{
194+
var mapper = new ModelMapper();
195+
mapper.Class<MyClass>(mc =>
196+
{
197+
mc.Id(x => x.Id, m => m.Access(Accessor.Backfield));
198+
});
199+
200+
HbmMapping mappings = mapper.CompileMappingForAllExplicitlyAddedEntities();
201+
HbmClass hbmClass = mappings.RootClasses[0];
202+
Assert.That(hbmClass.Id.access, Is.EqualTo("backfield"));
203+
}
204+
191205
[Test]
192206
public void WhenMapBagWithWrongElementTypeThenThrows()
193207
{

src/NHibernate/Mapping/ByCode/IAccessorPropertyMapper.cs

+3-2
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,13 @@ public enum Accessor
66
Field,
77
NoSetter,
88
ReadOnly,
9-
None
9+
None,
10+
Backfield,
1011
}
1112

1213
public interface IAccessorPropertyMapper
1314
{
1415
void Access(Accessor accessor);
1516
void Access(System.Type accessorType);
1617
}
17-
}
18+
}

src/NHibernate/Mapping/ByCode/Impl/AccessorPropertyMapper.cs

+4-1
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,9 @@ public void Access(Accessor accessor)
9292
case Accessor.None:
9393
setAccessor("none");
9494
break;
95+
case Accessor.Backfield:
96+
setAccessor("backfield");
97+
break;
9598
default:
9699
throw new ArgumentOutOfRangeException("accessor");
97100
}
@@ -136,4 +139,4 @@ private static MemberInfo GetField(System.Type type, string fieldName)
136139
return member;
137140
}
138141
}
139-
}
142+
}

0 commit comments

Comments
 (0)