private bool IsBindingTable(ShardingRule shardingRule, ListRouteValue shardingValue1, ListRouteValue shardingValue2) { var bindingRule = shardingRule.FindBindingTableRule(shardingValue1.GetTableName()); return(bindingRule != null && bindingRule.HasLogicTable(shardingValue2.GetTableName())); }
private ICollection <string> DoSharding(ICollection <string> availableTargetNames, ListRouteValue shardingValue) { ICollection <string> result = new LinkedList <string>(); foreach (var value in shardingValue.GetValues()) { string target = preciseShardingAlgorithm.DoSharding(availableTargetNames, new PreciseShardingValue(shardingValue.GetTableName(), shardingValue.GetColumnName(), value)); if (null != target) { result.Add(target); } } return(result); }
private bool IsSameLogicTable(ShardingRule shardingRule, ListRouteValue shardingValue1, ListRouteValue shardingValue2) { return(shardingValue1.GetTableName().Equals(shardingValue2.GetTableName()) || IsBindingTable(shardingRule, shardingValue1, shardingValue2)); }