Exemple #1
0
        /// <summary>
        /// 得到查询
        /// </summary>
        /// <param name="dbRoute"></param>
        /// <param name="query"></param>
        /// <returns></returns>
        protected virtual IList <QueryInfo> GetHandleQueries(DbRouteInfo dbRoute, QueryInfo query)
        {
            if (dbRoute.GetQueryShardingHandle == null)
            {
                return(null);
            }
            var shardings = dbRoute.GetQueryShardingHandle(query);

            if (shardings != null && shardings.Count > 0)
            {
                var result = new List <QueryInfo>();
                if (shardings.Count == 1)
                {
                    var sharding = shardings[0];
                    query.TableIndex = string.IsNullOrWhiteSpace(sharding.TableIndex)
                        ? sharding.TableIndex
                        : sharding.TableIndex.ToLower();
                    query.GetDataBase = string.IsNullOrWhiteSpace(sharding.GetDataBase)
                        ? sharding.GetDataBase
                        : sharding.GetDataBase.ToLower();
                    result.Add(query);
                }
                else
                {
                    MergeQueries(result, dbRoute, query, shardings);
                }
                return(result);
            }
            return(null);
        }