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