mergecontext is parallel query 采用compiler context的判断并且 GetQueryCompilerExecutor采用缓存
This commit is contained in:
parent
98b438315a
commit
d647dba4ce
|
@ -101,7 +101,8 @@ namespace ShardingCore.Sharding.ShardingExecutors
|
|||
{
|
||||
if (!hasQueryCompilerExecutor.HasValue)
|
||||
{
|
||||
if (!IsMergeQuery())
|
||||
hasQueryCompilerExecutor = !IsMergeQuery();
|
||||
if (hasQueryCompilerExecutor.Value)
|
||||
{
|
||||
var routeTailFactory = ShardingContainer.GetService<IRouteTailFactory>();
|
||||
var dbContext = GetShardingDbContext().GetDbContext(_dataSourceRouteResult.IntersectDataSources.First(), IsParallelQuery(), routeTailFactory.Create(_tableRouteResults.First()));
|
||||
|
|
|
@ -78,7 +78,8 @@ namespace ShardingCore.Sharding.ShardingExecutors
|
|||
{
|
||||
if (!hasQueryCompilerExecutor.HasValue)
|
||||
{
|
||||
if (_queryEntities.All(o => !_entityMetadataManager.IsSharding(o)))
|
||||
hasQueryCompilerExecutor = _queryEntities.All(o => !_entityMetadataManager.IsSharding(o));
|
||||
if (hasQueryCompilerExecutor.Value)
|
||||
{
|
||||
var virtualDataSource = (IVirtualDataSource)ShardingContainer.GetService(
|
||||
typeof(IVirtualDataSource<>).GetGenericType0(_shardingDbContextType));
|
||||
|
|
|
@ -250,7 +250,7 @@ namespace ShardingCore.Sharding
|
|||
/// <returns></returns>
|
||||
public bool IsParallelQuery()
|
||||
{
|
||||
return !_shardingConfigOption.AutoTrackEntity || IsCrossTable || IsUseReadWriteSeparation();
|
||||
return !_shardingConfigOption.AutoTrackEntity || MergeQueryCompilerContext.IsCrossTable() || MergeQueryCompilerContext.IsParallelQuery();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
Loading…
Reference in New Issue