示例#1
0
        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 _));
        }