示例#1
0
        protected override List <IPhysicTable> DoRouteWithWhere(List <IPhysicTable> allPhysicTables, IQueryable queryable)
        {
            //获取所有需要路由的表后缀
            var filter       = ShardingKeyUtil.GetRouteObjectOperatorFilter(queryable, ShardingKeyUtil.Parse(typeof(T)), ConvertToShardingKey, GetRouteToFilter);
            var physicTables = allPhysicTables.Where(o => filter(o.Tail)).ToList();

            return(physicTables);
        }
        public override List <IPhysicTable> RouteWithWhere(List <IPhysicTable> allPhysicTables, ShardingEntityConfig shardingEntityConfig, IQueryable <T> queryable)
        {
            //获取所有需要路由的表后缀
            var filter       = ShardingKeyUtil.GetRouteObjectOperatorFilter(queryable, shardingEntityConfig, ConvertShardingKeyValue, GetRouteToFilter);
            var physicTables = allPhysicTables.Where(o => filter(o.Tail)).ToList();

            if (physicTables.Count > 1)
            {
                throw new Exception($"表:{string.Join(",", physicTables.Select(o => $"[{o.FullName}]"))}");
            }
            return(physicTables);
        }