private static bool IsNotOptionalEntityMemberId(IMemberMapperData mapperData) { var targetMember = mapperData.TargetMember; if (!targetMember.Type.IsNullableType()) { return(true); } var targetMemberNameSuffix = default(string); for (var i = targetMember.Name.Length - 1; i > 0; --i) { if (char.IsUpper(targetMember.Name[i])) { targetMemberNameSuffix = targetMember.Name.Substring(i).ToLowerInvariant(); break; } } switch (targetMemberNameSuffix) { case "id": case "identifier": break; default: return(true); } if (!mapperData.TargetTypeIsEntity()) { return(true); } var entityMemberNameLength = targetMember.Name.Length - targetMemberNameSuffix.Length; var entityMemberName = targetMember.Name.Substring(0, entityMemberNameLength); var entityMember = GlobalContext .Instance .MemberCache .GetTargetMembers(mapperData.TargetType) .FirstOrDefault(entityMemberName, (emn, m) => m.Name == emn); return(!mapperData.IsEntity(entityMember?.Type, out _)); }