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); } }
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)); }