diff --git a/samples/Sample.SqlServer/Controllers/ValuesController.cs b/samples/Sample.SqlServer/Controllers/ValuesController.cs index ad4c713a..ccc7d8f2 100644 --- a/samples/Sample.SqlServer/Controllers/ValuesController.cs +++ b/samples/Sample.SqlServer/Controllers/ValuesController.cs @@ -12,6 +12,7 @@ using System.Linq; using System.Linq.Expressions; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore.Metadata; +using ShardingCore; using ShardingCore.Core.VirtualRoutes.TableRoutes; using ShardingCore.Extensions.ShardingQueryableExtensions; using ShardingCore.Core; @@ -43,6 +44,7 @@ namespace Sample.SqlServer.Controllers _shardingRouteManager = shardingRuntimeContext.GetShardingRouteManager(); _readWriteManager = shardingRuntimeContext.GetShardingReadWriteManager(); _shardingRuntimeContext = shardingRuntimeContext; + } [HttpGet] diff --git a/src/ShardingCore/Core/VirtualRoutes/TableRoutes/Abstractions/AbstractShardingOperatorVirtualTableRoute.cs b/src/ShardingCore/Core/VirtualRoutes/TableRoutes/Abstractions/AbstractShardingOperatorVirtualTableRoute.cs index f0d46de5..677dcdf5 100644 --- a/src/ShardingCore/Core/VirtualRoutes/TableRoutes/Abstractions/AbstractShardingOperatorVirtualTableRoute.cs +++ b/src/ShardingCore/Core/VirtualRoutes/TableRoutes/Abstractions/AbstractShardingOperatorVirtualTableRoute.cs @@ -53,7 +53,7 @@ namespace ShardingCore.Core.VirtualRoutes.TableRoutes.Abstractions { if (EntityMetadata.IsMainShardingTableKey(shardingPropertyName)) { - return GetRouteToFilter((TKey)shardingKey, shardingOperator); + return GetRouteToFilter(CompareValueToKey(shardingKey), shardingOperator); } else { @@ -61,6 +61,10 @@ namespace ShardingCore.Core.VirtualRoutes.TableRoutes.Abstractions } } + public virtual TKey CompareValueToKey(object shardingKey) + { + return (TKey)shardingKey; + } public abstract Func GetRouteToFilter(TKey shardingKey, ShardingOperatorEnum shardingOperator); diff --git a/src/ShardingCore/Sharding/Enumerators/StreamMergeAsync/MultiAggregateOrderStreamMergeAsyncEnumerator.cs b/src/ShardingCore/Sharding/Enumerators/StreamMergeAsync/MultiAggregateOrderStreamMergeAsyncEnumerator.cs index 02d05e9e..b3c3919a 100644 --- a/src/ShardingCore/Sharding/Enumerators/StreamMergeAsync/MultiAggregateOrderStreamMergeAsyncEnumerator.cs +++ b/src/ShardingCore/Sharding/Enumerators/StreamMergeAsync/MultiAggregateOrderStreamMergeAsyncEnumerator.cs @@ -168,7 +168,7 @@ namespace ShardingCore.Sharding.Enumerators if (aggregateValues.IsNotEmpty()) { - var copyFields = string.Join(",", _mergeContext.SelectContext.SelectProperties.Select(o=>o.PropertyName)); + // var copyFields = string.Join(",", _mergeContext.SelectContext.SelectProperties.Select(o=>o.PropertyName)); CurrentValue = AggregateExtension.CopyTSource(aggregateValues.First()); if (aggregateValues.Count > 1) diff --git a/src/ShardingCore/Sharding/MergeEngines/Executors/ShardingMergers/AbstractEnumerableShardingMerger.cs b/src/ShardingCore/Sharding/MergeEngines/Executors/ShardingMergers/AbstractEnumerableShardingMerger.cs index f97872fe..c0be3129 100644 --- a/src/ShardingCore/Sharding/MergeEngines/Executors/ShardingMergers/AbstractEnumerableShardingMerger.cs +++ b/src/ShardingCore/Sharding/MergeEngines/Executors/ShardingMergers/AbstractEnumerableShardingMerger.cs @@ -75,7 +75,7 @@ namespace ShardingCore.Sharding.MergeEngines.Executors.ShardingMergers //聚合 if (parallelResults is IEnumerable> parallelStreamEnumeratorResults) { - var mergeAsyncEnumerators = new List>(parallelResults.Count); + var mergeAsyncEnumerators = new List>(parallelResults.Count+previewResultsCount); if (previewResultsCount == 1) { mergeAsyncEnumerators.Add(beforeInMemoryResults.First());