protected override void RegisterManyToOneMapping <TProperty>(System.Linq.Expressions.Expression <System.Func <TEntity, TProperty> > property, System.Action <IManyToOneMapper> mapping)
        {
            MemberInfo member   = TypeExtensions.DecodeMemberAccessExpression(property);
            MemberInfo memberOf = TypeExtensions.DecodeMemberAccessExpressionOf(property);

            ExplicitDeclarationsHolder.AddAsNaturalId(member);
            ExplicitDeclarationsHolder.AddAsNaturalId(memberOf);
            base.RegisterManyToOneMapping(property, mapping);
        }
        protected override void RegisterNoVisiblePropertyMapping(string notVisiblePropertyOrFieldName, System.Action <IPropertyMapper> mapping)
        {
            MemberInfo member   = typeof(TEntity).GetPropertyOrFieldMatchingName(notVisiblePropertyOrFieldName);
            MemberInfo memberOf = member.GetMemberFromReflectedType(typeof(TEntity));

            ExplicitDeclarationsHolder.AddAsNaturalId(member);
            ExplicitDeclarationsHolder.AddAsNaturalId(memberOf);
            base.RegisterNoVisiblePropertyMapping(notVisiblePropertyOrFieldName, mapping);
        }
        public void MergeNaturalIds()
        {
            var destination = new ExplicitDeclarationsHolder();
            var source      = new ExplicitDeclarationsHolder();

            source.AddAsNaturalId(property);

            destination.Merge(source);
            destination.NaturalIds.Should().Have.Count.EqualTo(1);
        }
        public void MergeNaturalIds()
        {
            var destination = new ExplicitDeclarationsHolder();
            var source      = new ExplicitDeclarationsHolder();

            source.AddAsNaturalId(property);

            destination.Merge(source);
            Assert.That(destination.NaturalIds, Has.Count.EqualTo(1));
        }