public static IEnumerable <PosName> ConvertFromNewConvention(this IEnumerable <PosName> posNames, PocoData pocoData)
        {
            IEnumerable <PocoMember> allMembers        = pocoData.GetAllMembers();
            List <PocoMember>        scopedPocoMembers = pocoData.Members;
            string prefix = null;

            foreach (PosName posName in posNames)
            {
                if (posName.Name.StartsWith(SplitPrefix, StringComparison.OrdinalIgnoreCase))
                {
                    prefix = posName.Name.Substring(SplitPrefix.Length);
                    PocoMember relevantMembers = allMembers.SingleOrDefault(x => string.Equals(PocoColumn.GenerateKey(x.MemberInfoChain), prefix, StringComparison.OrdinalIgnoreCase));
                    if (relevantMembers != null)
                    {
                        scopedPocoMembers = relevantMembers.PocoMemberChildren;
                    }

                    continue;
                }

                PocoMember member = FindMember(scopedPocoMembers, posName.Name);
                if (member != null && member.PocoColumn != null)
                {
                    posName.Name = member.PocoColumn.MemberInfoKey;
                }
                else
                {
                    posName.Name = PocoDataBuilder.JoinStrings(prefix, posName.Name);
                }

                yield return(posName);
            }
        }
Exemple #2
0
        private static bool IsPocoMemberEqual(PocoMember pocoMember, string prefix, string name)
        {
            if (pocoMember.PocoColumn == null)
            {
                return(PropertyMapper.IsEqual(name, pocoMember.Name, false));
            }

            if (pocoMember.PocoColumn.MemberInfoKey == name)
            {
                return(true);
            }

            if (string.Equals(pocoMember.PocoColumn.ColumnName, PocoDataBuilder.JoinStrings(prefix, name), StringComparison.OrdinalIgnoreCase))
            {
                return(true);
            }

            if (PropertyMapper.IsEqual(name, pocoMember.PocoColumn.ColumnAlias ?? pocoMember.PocoColumn.ColumnName, pocoMember.PocoColumn.ExactColumnNameMatch))
            {
                return(true);
            }

            return(PropertyMapper.IsEqual(name, pocoMember.Name, pocoMember.PocoColumn.ExactColumnNameMatch));
        }