/// <summary>
        /// 引用关系(NoSQL)。
        /// </summary>
        /// <param name="refer">引用关系。</param>
        /// <param name="selfSource">主查询(表名,$self 为自动识别)</param>
        /// <param name="filter">过滤器。</param>
        /// <returns></returns>
        public virtual ISelectCommandBuilder Refer(NoSQL.Refer refer, string selfSource = "$self", CommandReferFilterDelegate filter = null)
        {
            if (refer == null || (filter != null && !filter(this, refer)))
            {
                return(this);
            }

            if (string.IsNullOrEmpty(selfSource) || string.Equals(selfSource, "$self", System.StringComparison.OrdinalIgnoreCase))
            {
                selfSource = _tableName;
            }

            foreach (NoSQL.ReferEntry item in refer)
            {
                if (item.IsThis)
                {
                    continue;
                }
                _whereBefores.Add(string.Format(" left join {0} as {1} on {1}.{2}={3}.{4}",
                                                _dialect.PreName(PreSelfName(item.Source, selfSource), "."),
                                                _dialect.PreName(item.Name),
                                                _dialect.PreName(item.SourceField),
                                                _dialect.PreName(PreSelfName(item.Target, selfSource)),
                                                _dialect.PreName(item.TargetField, "."))
                                  );
            }
            return(this);
        }
 /// <summary>
 /// 引用关系(NoSQL)。
 /// </summary>
 /// <param name="refer">引用关系。</param>
 /// <param name="selfSource">主查询(表名,$self 为自动识别)</param>
 /// <param name="filter">过滤器。</param>
 /// <returns></returns>
 public virtual ISelectCommandBuilder Refer(object refer, string selfSource = "$self", CommandReferFilterDelegate filter = null)
 {
     if (refer == null)
     {
         return(this);
     }
     return(Refer(NoSQL.Refer.Parse(refer), selfSource, filter));
 }