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