protected virtual string GetMethodName(bool isRemote)
        {
            var  sb      = new StringBuilder();
            bool isFirst = true;

            if (IsType(SearchCriteriaType.ForeignKey))
            {
                foreach (AssociationProperty associationProperty in ForeignProperties)
                {
                    if (isFirst)
                    {
                        isFirst = false;
                        sb.AppendFormat(Configuration.Instance.SearchCriteriaProperty.Prefix, NamingConventions.CleanEscapeSystemType(Association.ForeignEntity.Name));
                    }
                    else
                    {
                        sb.Append(Configuration.Instance.SearchCriteriaProperty.Delimeter);
                    }

                    if (isRemote)
                    {
                        sb.Append(NamingConventions.CleanEscapeSystemType(associationProperty.ForeignProperty.Name));
                    }
                    else
                    {
                        sb.Append(NamingConventions.CleanEscapeSystemType(associationProperty.Property.Name));
                    }
                }

                sb.Append(Configuration.Instance.SearchCriteriaProperty.Suffix);
            }
            else if (IsType(SearchCriteriaType.PrimaryKey) && !String.IsNullOrEmpty(Configuration.Instance.SearchCriteriaProperty.MethodKeySuffix))
            {
                sb.Append(Configuration.Instance.SearchCriteriaProperty.Prefix);
                sb.Append(Configuration.Instance.SearchCriteriaProperty.MethodKeySuffix);
            }
            else   // Handle anything not a ForeignKey.
            {
                foreach (IProperty member in Properties)
                {
                    if (isFirst)
                    {
                        isFirst = false;
                        sb.AppendFormat(Configuration.Instance.SearchCriteriaProperty.Prefix, NamingConventions.CleanEscapeSystemType(member.Entity.Name));
                    }
                    else
                    {
                        sb.Append(Configuration.Instance.SearchCriteriaProperty.Delimeter);
                    }

                    sb.Append(member.Name);
                }

                sb.Append(Configuration.Instance.SearchCriteriaProperty.Suffix);
            }

            return(sb.ToString());
        }