From 97bbe76df4c33ac20d55cf25a1f7408fa16d9a8a Mon Sep 17 00:00:00 2001 From: MysticBoy Date: Wed, 22 Nov 2023 14:34:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E7=A6=BBEFCore7,=E5=B0=86src=E4=B8=8B?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E8=AE=BE=E7=BD=AE=E4=B8=BA=20EFCore8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ShardingCore.sln | 11 ++- .../EFCore7x/ScriptMigrationGenerator.cs | 2 +- .../EFCores/EFCore7x/ShardingChangeTracker.cs | 2 +- .../EFCores/EFCore7x/ShardingMigrator.cs | 2 +- .../EFCores/EFCore7x/ShardingModelSource.cs | 2 +- .../EFCore7x/ShardingOptionsExtension.cs | 2 +- .../EFCores/EFCore7x/ShardingStateManager.cs | 2 +- .../EFCore7x/ShardingWrapOptionsExtension.cs | 2 +- .../Tx/ShardingRelationalTransaction.cs | 2 +- .../ShardingRelationalTransactionFactory.cs | 2 +- .../ShardingRelationalTransactionManager.cs | 2 +- .../EFCore7x/UnionAllMergeOptionsExtension.cs | 2 +- .../DbContextExtensionShardingCore.cs | 72 +++++++++++++------ .../Methods/ExecuteDeleteMethodExecutor.cs | 2 +- .../Methods/ExecuteUpdateMethodExecutor.cs | 2 +- .../ExecuteDeleteAsyncMemoryMergeEngine.cs | 2 +- .../ExecuteUpdateAsyncMemoryMergeEngine.cs | 2 +- .../Visitors/ShardingQueryPrepareVisitor.cs | 4 +- .../DefaultShardingQueryExecutor.cs | 2 +- .../QueryCompilerContextFactory.cs | 2 +- .../DbContextReplaceQueryableVisitor.cs | 10 +-- .../Visitors/Querys/QueryEntitiesVisitor.cs | 4 +- src/ShardingCore/ShardingCore.csproj | 10 +-- src7/ShardingCore7/ShardingCore7.csproj | 39 ++++++++++ 24 files changed, 130 insertions(+), 54 deletions(-) create mode 100644 src7/ShardingCore7/ShardingCore7.csproj diff --git a/ShardingCore.sln b/ShardingCore.sln index 392828bd..ebedb93f 100644 --- a/ShardingCore.sln +++ b/ShardingCore.sln @@ -73,7 +73,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ShardingCore3", "src3\Shard EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ShardingCore2", "src2\ShardingCore2\ShardingCore2.csproj", "{F0393C32-2285-4F47-AC61-C1BA1CAC269D}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sample.MySQLDataSourceOnly", "samples\Sample.MySQLDataSourceOnly\Sample.MySQLDataSourceOnly.csproj", "{3B5A4B03-5190-41A8-8E4B-F95A79A5C018}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sample.MySQLDataSourceOnly", "samples\Sample.MySQLDataSourceOnly\Sample.MySQLDataSourceOnly.csproj", "{3B5A4B03-5190-41A8-8E4B-F95A79A5C018}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ShardingCore7", "src7\ShardingCore7\ShardingCore7.csproj", "{A308D253-A072-40EC-AA97-15EE82BB8AAD}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src7", "src7", "{A5321A3E-8539-4E2A-889C-8E91989EECBD}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -193,6 +197,10 @@ Global {3B5A4B03-5190-41A8-8E4B-F95A79A5C018}.Debug|Any CPU.Build.0 = Debug|Any CPU {3B5A4B03-5190-41A8-8E4B-F95A79A5C018}.Release|Any CPU.ActiveCfg = Release|Any CPU {3B5A4B03-5190-41A8-8E4B-F95A79A5C018}.Release|Any CPU.Build.0 = Release|Any CPU + {A308D253-A072-40EC-AA97-15EE82BB8AAD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A308D253-A072-40EC-AA97-15EE82BB8AAD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A308D253-A072-40EC-AA97-15EE82BB8AAD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A308D253-A072-40EC-AA97-15EE82BB8AAD}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -226,6 +234,7 @@ Global {B59909AD-8885-40F3-9454-6C8433463BCC} = {51E1D067-3E81-4815-94F2-F8ABBE80881E} {F0393C32-2285-4F47-AC61-C1BA1CAC269D} = {B11D7DF7-A907-407E-8BF1-35B430413557} {3B5A4B03-5190-41A8-8E4B-F95A79A5C018} = {EDF8869A-C1E1-491B-BC9F-4A33F4DE1C73} + {A308D253-A072-40EC-AA97-15EE82BB8AAD} = {A5321A3E-8539-4E2A-889C-8E91989EECBD} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {8C07A667-E8B4-43C7-8053-721584BAD291} diff --git a/src/ShardingCore/EFCores/EFCore7x/ScriptMigrationGenerator.cs b/src/ShardingCore/EFCores/EFCore7x/ScriptMigrationGenerator.cs index c4f8e010..51b3ca12 100644 --- a/src/ShardingCore/EFCores/EFCore7x/ScriptMigrationGenerator.cs +++ b/src/ShardingCore/EFCores/EFCore7x/ScriptMigrationGenerator.cs @@ -1,4 +1,4 @@ -#if EFCORE7 +#if EFCORE7 || EFCORE8 using Microsoft.EntityFrameworkCore.Migrations; using ShardingCore.Core.RuntimeContexts; diff --git a/src/ShardingCore/EFCores/EFCore7x/ShardingChangeTracker.cs b/src/ShardingCore/EFCores/EFCore7x/ShardingChangeTracker.cs index 593f20d2..af85b1b1 100644 --- a/src/ShardingCore/EFCores/EFCore7x/ShardingChangeTracker.cs +++ b/src/ShardingCore/EFCores/EFCore7x/ShardingChangeTracker.cs @@ -1,4 +1,4 @@ -#if EFCORE7 +#if EFCORE7 || EFCORE8 using System; using System.Collections.Generic; using System.Linq; diff --git a/src/ShardingCore/EFCores/EFCore7x/ShardingMigrator.cs b/src/ShardingCore/EFCores/EFCore7x/ShardingMigrator.cs index 5cbb1bc2..1a5ed0b2 100644 --- a/src/ShardingCore/EFCores/EFCore7x/ShardingMigrator.cs +++ b/src/ShardingCore/EFCores/EFCore7x/ShardingMigrator.cs @@ -1,5 +1,5 @@ -#if EFCORE7 +#if EFCORE7 || EFCORE8 using System.Threading; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; diff --git a/src/ShardingCore/EFCores/EFCore7x/ShardingModelSource.cs b/src/ShardingCore/EFCores/EFCore7x/ShardingModelSource.cs index 00cd3a77..9c7280f2 100644 --- a/src/ShardingCore/EFCores/EFCore7x/ShardingModelSource.cs +++ b/src/ShardingCore/EFCores/EFCore7x/ShardingModelSource.cs @@ -1,4 +1,4 @@ -#if EFCORE7 +#if EFCORE7 || EFCORE8 using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; diff --git a/src/ShardingCore/EFCores/EFCore7x/ShardingOptionsExtension.cs b/src/ShardingCore/EFCores/EFCore7x/ShardingOptionsExtension.cs index f14abae5..65c25ef2 100644 --- a/src/ShardingCore/EFCores/EFCore7x/ShardingOptionsExtension.cs +++ b/src/ShardingCore/EFCores/EFCore7x/ShardingOptionsExtension.cs @@ -1,4 +1,4 @@ -#if EFCORE7 +#if EFCORE7 || EFCORE8 using System; using System.Collections.Generic; diff --git a/src/ShardingCore/EFCores/EFCore7x/ShardingStateManager.cs b/src/ShardingCore/EFCores/EFCore7x/ShardingStateManager.cs index 24dd7601..540f72ef 100644 --- a/src/ShardingCore/EFCores/EFCore7x/ShardingStateManager.cs +++ b/src/ShardingCore/EFCores/EFCore7x/ShardingStateManager.cs @@ -1,4 +1,4 @@ -#if EFCORE7 +#if EFCORE7 || EFCORE8 using System; using System.Collections.Generic; diff --git a/src/ShardingCore/EFCores/EFCore7x/ShardingWrapOptionsExtension.cs b/src/ShardingCore/EFCores/EFCore7x/ShardingWrapOptionsExtension.cs index 58fd50a3..1986af02 100644 --- a/src/ShardingCore/EFCores/EFCore7x/ShardingWrapOptionsExtension.cs +++ b/src/ShardingCore/EFCores/EFCore7x/ShardingWrapOptionsExtension.cs @@ -1,4 +1,4 @@ -#if EFCORE7 +#if EFCORE7 || EFCORE8 using System; using System.Collections.Generic; diff --git a/src/ShardingCore/EFCores/EFCore7x/Tx/ShardingRelationalTransaction.cs b/src/ShardingCore/EFCores/EFCore7x/Tx/ShardingRelationalTransaction.cs index 3dd1a266..f3d793da 100644 --- a/src/ShardingCore/EFCores/EFCore7x/Tx/ShardingRelationalTransaction.cs +++ b/src/ShardingCore/EFCores/EFCore7x/Tx/ShardingRelationalTransaction.cs @@ -1,4 +1,4 @@ -#if EFCORE7 +#if EFCORE7 || EFCORE8 using System; using System.Collections.Generic; using System.Data.Common; diff --git a/src/ShardingCore/EFCores/EFCore7x/Tx/ShardingRelationalTransactionFactory.cs b/src/ShardingCore/EFCores/EFCore7x/Tx/ShardingRelationalTransactionFactory.cs index 07465490..7d1e62f9 100644 --- a/src/ShardingCore/EFCores/EFCore7x/Tx/ShardingRelationalTransactionFactory.cs +++ b/src/ShardingCore/EFCores/EFCore7x/Tx/ShardingRelationalTransactionFactory.cs @@ -1,4 +1,4 @@ -#if EFCORE7 +#if EFCORE7 || EFCORE8 using System; using System.Collections.Generic; using System.Data.Common; diff --git a/src/ShardingCore/EFCores/EFCore7x/Tx/ShardingRelationalTransactionManager.cs b/src/ShardingCore/EFCores/EFCore7x/Tx/ShardingRelationalTransactionManager.cs index a1e84ee5..8cf5c8bc 100644 --- a/src/ShardingCore/EFCores/EFCore7x/Tx/ShardingRelationalTransactionManager.cs +++ b/src/ShardingCore/EFCores/EFCore7x/Tx/ShardingRelationalTransactionManager.cs @@ -1,4 +1,4 @@ -#if EFCORE7 +#if EFCORE7 || EFCORE8 using System; using System.Collections.Generic; using System.Data; diff --git a/src/ShardingCore/EFCores/EFCore7x/UnionAllMergeOptionsExtension.cs b/src/ShardingCore/EFCores/EFCore7x/UnionAllMergeOptionsExtension.cs index 9e6c80f1..19b91479 100644 --- a/src/ShardingCore/EFCores/EFCore7x/UnionAllMergeOptionsExtension.cs +++ b/src/ShardingCore/EFCores/EFCore7x/UnionAllMergeOptionsExtension.cs @@ -1,4 +1,4 @@ -#if EFCORE7 +#if EFCORE7 || EFCORE8 using System; using System.Collections.Generic; diff --git a/src/ShardingCore/Extensions/DbContextExtensions/DbContextExtensionShardingCore.cs b/src/ShardingCore/Extensions/DbContextExtensions/DbContextExtensionShardingCore.cs index 92cc5a40..ce2351e6 100644 --- a/src/ShardingCore/Extensions/DbContextExtensions/DbContextExtensionShardingCore.cs +++ b/src/ShardingCore/Extensions/DbContextExtensions/DbContextExtensionShardingCore.cs @@ -32,10 +32,10 @@ namespace ShardingCore.Extensions /// public static void RemoveDbContextRelationModelThatIsShardingTable(this DbContext dbContext) { -#if !EFCORE2 && !EFCORE3 && !EFCORE5 && !EFCORE6 && !EFCORE7 +#if !EFCORE2 && !EFCORE3 && !EFCORE5 && !EFCORE6 && !EFCORE7 && !EFCORE8 throw new NotImplementedException(); #endif -#if EFCORE6 ||EFCORE7 +#if EFCORE6 ||EFCORE7 || EFCORE8 var contextModel = dbContext.GetService().Model; #endif @@ -46,7 +46,7 @@ namespace ShardingCore.Extensions var shardingRuntimeContext = dbContext.GetShardingRuntimeContext(); var entityMetadataManager = shardingRuntimeContext.GetEntityMetadataManager(); -#if EFCORE6 || EFCORE7 +#if EFCORE6 || EFCORE7 || EFCORE8 var entityTypes = contextModel.GetEntityTypes(); foreach (var entityType in entityTypes) { @@ -55,15 +55,24 @@ namespace ShardingCore.Extensions _data.Clear(); } } - var contextModelRelationalModel = contextModel.GetRelationalModel() as RelationalModel; + var contextModelRelationalModel = contextModel.GetRelationalModel() as RelationalModel; +#if EFCORE6 || EFCORE7 + var valueTuples = - contextModelRelationalModel.Tables.Where(o =>o.Value.EntityTypeMappings.Any(m => entityMetadataManager.IsShardingTable(m.EntityType.ClrType))).Select(o => o.Key).ToList(); + contextModelRelationalModel.Tables.Where(o =>o.Value.EntityTypeMappings.Any(m => entityMetadataManager.IsShardingTable(m.EntityType.ClrType))).Select(o => o.Key).ToList(); +#endif +#if EFCORE8 + var valueTuples = + contextModelRelationalModel.Tables.Where(o => o.Value.EntityTypeMappings.Any(m => entityMetadataManager.IsShardingTable(m.TypeBase.ClrType))).Select(o => o.Key).ToList(); +#endif for (int i = 0; i < valueTuples.Count; i++) { contextModelRelationalModel.Tables.Remove(valueTuples[i]); - } + } #endif -#if EFCORE5 + + +#if EFCORE5 var entityTypes = contextModel.GetEntityTypes(); foreach (var entityType in entityTypes) { @@ -132,10 +141,10 @@ namespace ShardingCore.Extensions /// public static void RemoveDbContextAllRelationModelWithoutShardingDataSourceOnly(this DbContext dbContext) { -#if !EFCORE2&& !EFCORE3 && !EFCORE5 && !EFCORE6 && !EFCORE7 +#if !EFCORE2&& !EFCORE3 && !EFCORE5 && !EFCORE6 && !EFCORE7 && !EFCORE8 throw new NotImplementedException(); #endif -#if EFCORE6 || EFCORE7 +#if EFCORE6 || EFCORE7 || EFCORE8 var contextModel = dbContext.GetService().Model; ; #endif @@ -146,7 +155,7 @@ namespace ShardingCore.Extensions var shardingRuntimeContext = dbContext.GetShardingRuntimeContext(); var entityMetadataManager = shardingRuntimeContext.GetEntityMetadataManager(); -#if EFCORE6 || EFCORE7 +#if EFCORE6 || EFCORE7 || EFCORE8 var entityTypes = contextModel.GetEntityTypes(); foreach (var entityType in entityTypes) { @@ -155,15 +164,24 @@ namespace ShardingCore.Extensions _data.Clear(); } } - var contextModelRelationalModel = contextModel.GetRelationalModel() as RelationalModel; + var contextModelRelationalModel = contextModel.GetRelationalModel() as RelationalModel; +#if EFCORE6 || EFCORE7 var valueTuples = - contextModelRelationalModel.Tables.Where(o => o.Value.EntityTypeMappings.Any(m => !entityMetadataManager.IsOnlyShardingDataSource(m.EntityType.ClrType)) ).Select(o => o.Key).ToList(); + contextModelRelationalModel.Tables.Where(o => o.Value.EntityTypeMappings.Any(m => !entityMetadataManager.IsOnlyShardingDataSource(m.EntityType.ClrType)) ).Select(o => o.Key).ToList(); +#endif +#if EFCORE8 + var valueTuples = + contextModelRelationalModel.Tables.Where(o => o.Value.EntityTypeMappings.Any(m => !entityMetadataManager.IsOnlyShardingDataSource(m.TypeBase.ClrType))).Select(o => o.Key).ToList(); +#endif for (int i = 0; i < valueTuples.Count; i++) { contextModelRelationalModel.Tables.Remove(valueTuples[i]); - } + } #endif -#if EFCORE5 + + + +#if EFCORE5 var entityTypes = contextModel.GetEntityTypes(); foreach (var entityType in entityTypes) { @@ -204,10 +222,10 @@ namespace ShardingCore.Extensions /// public static void RemoveDbContextAllRelationModel(this DbContext dbContext) { -#if !EFCORE2 && !EFCORE3 && !EFCORE5 && !EFCORE6&& !EFCORE7 +#if !EFCORE2 && !EFCORE3 && !EFCORE5 && !EFCORE6&& !EFCORE7&& !EFCORE8 throw new NotImplementedException(); #endif -#if EFCORE6|| EFCORE7 +#if EFCORE6|| EFCORE7 || EFCORE8 var contextModel = dbContext.GetService().Model; ; #endif @@ -216,7 +234,7 @@ namespace ShardingCore.Extensions var contextModel = dbContext.Model as Model; #endif -#if EFCORE6 || EFCORE7 +#if EFCORE6 || EFCORE7 || EFCORE8 var contextModelRelationalModel = contextModel.GetRelationalModel() as RelationalModel; contextModelRelationalModel.Tables.Clear(); #endif @@ -239,14 +257,14 @@ namespace ShardingCore.Extensions public static void RemoveDbContextRelationModelSaveOnlyThatIsNamedType(this DbContext dbContext, Type shardingType) { -#if !EFCORE2 && !EFCORE3 && !EFCORE5 && !EFCORE6&& !EFCORE7 +#if !EFCORE2 && !EFCORE3 && !EFCORE5 && !EFCORE6&& !EFCORE7&& !EFCORE8 1 #endif #if EFCORE2 || EFCORE3 || EFCORE5 var contextModel = dbContext.Model as Model; #endif -#if EFCORE6 || EFCORE7 +#if EFCORE6 || EFCORE7 || EFCORE8 var contextModel = dbContext.GetService().Model; var entityTypes = contextModel.GetEntityTypes(); foreach (var entityType in entityTypes) @@ -256,16 +274,26 @@ namespace ShardingCore.Extensions _data.Clear(); } } - var contextModelRelationalModel = contextModel.GetRelationalModel() as RelationalModel; + var contextModelRelationalModel = contextModel.GetRelationalModel() as RelationalModel; +#if EFCORE6 || EFCORE7 var valueTuples = contextModelRelationalModel.Tables .Where(o => o.Value.EntityTypeMappings.All(m => m.EntityType.ClrType != shardingType)) - .Select(o => o.Key).ToList(); + .Select(o => o.Key).ToList(); +#endif +#if EFCORE8 + var valueTuples = + contextModelRelationalModel.Tables + .Where(o => o.Value.EntityTypeMappings.All(m => m.TypeBase.ClrType != shardingType)) + .Select(o => o.Key).ToList(); +#endif + for (int i = 0; i < valueTuples.Count; i++) { contextModelRelationalModel.Tables.Remove(valueTuples[i]); - } + } #endif + #if EFCORE5 var contextModelRelationalModel = contextModel.RelationalModel as RelationalModel; diff --git a/src/ShardingCore/Sharding/MergeEngines/Executors/Methods/ExecuteDeleteMethodExecutor.cs b/src/ShardingCore/Sharding/MergeEngines/Executors/Methods/ExecuteDeleteMethodExecutor.cs index a79bab53..ace3483d 100644 --- a/src/ShardingCore/Sharding/MergeEngines/Executors/Methods/ExecuteDeleteMethodExecutor.cs +++ b/src/ShardingCore/Sharding/MergeEngines/Executors/Methods/ExecuteDeleteMethodExecutor.cs @@ -1,4 +1,4 @@ -#if EFCORE7 +#if EFCORE7 || EFCORE8 using System; using System.Linq; using System.Linq.Expressions; diff --git a/src/ShardingCore/Sharding/MergeEngines/Executors/Methods/ExecuteUpdateMethodExecutor.cs b/src/ShardingCore/Sharding/MergeEngines/Executors/Methods/ExecuteUpdateMethodExecutor.cs index 96764b75..1ebcf45d 100644 --- a/src/ShardingCore/Sharding/MergeEngines/Executors/Methods/ExecuteUpdateMethodExecutor.cs +++ b/src/ShardingCore/Sharding/MergeEngines/Executors/Methods/ExecuteUpdateMethodExecutor.cs @@ -1,4 +1,4 @@ -#if EFCORE7 +#if EFCORE7 || EFCORE8 using System; using System.Linq; using System.Linq.Expressions; diff --git a/src/ShardingCore/Sharding/MergeEngines/ShardingMergeEngines/ExecuteDeleteAsyncMemoryMergeEngine.cs b/src/ShardingCore/Sharding/MergeEngines/ShardingMergeEngines/ExecuteDeleteAsyncMemoryMergeEngine.cs index a5c5322a..38cc23a9 100644 --- a/src/ShardingCore/Sharding/MergeEngines/ShardingMergeEngines/ExecuteDeleteAsyncMemoryMergeEngine.cs +++ b/src/ShardingCore/Sharding/MergeEngines/ShardingMergeEngines/ExecuteDeleteAsyncMemoryMergeEngine.cs @@ -1,4 +1,4 @@ -#if EFCORE7 +#if EFCORE7|| EFCORE8 using ShardingCore.Sharding.MergeEngines.Executors.Abstractions; using ShardingCore.Sharding.MergeEngines.Executors.Methods; using ShardingCore.Sharding.MergeEngines.ShardingMergeEngines.Abstractions.InMemoryMerge; diff --git a/src/ShardingCore/Sharding/MergeEngines/ShardingMergeEngines/ExecuteUpdateAsyncMemoryMergeEngine.cs b/src/ShardingCore/Sharding/MergeEngines/ShardingMergeEngines/ExecuteUpdateAsyncMemoryMergeEngine.cs index a5bfa241..52068055 100644 --- a/src/ShardingCore/Sharding/MergeEngines/ShardingMergeEngines/ExecuteUpdateAsyncMemoryMergeEngine.cs +++ b/src/ShardingCore/Sharding/MergeEngines/ShardingMergeEngines/ExecuteUpdateAsyncMemoryMergeEngine.cs @@ -1,4 +1,4 @@ -#if EFCORE7 +#if EFCORE7 || EFCORE8 using ShardingCore.Sharding.MergeEngines.Executors.Abstractions; using ShardingCore.Sharding.MergeEngines.Executors.Methods; using ShardingCore.Sharding.MergeEngines.ShardingMergeEngines.Abstractions.InMemoryMerge; diff --git a/src/ShardingCore/Sharding/Parsers/Visitors/ShardingQueryPrepareVisitor.cs b/src/ShardingCore/Sharding/Parsers/Visitors/ShardingQueryPrepareVisitor.cs index 56a7de40..de541b65 100644 --- a/src/ShardingCore/Sharding/Parsers/Visitors/ShardingQueryPrepareVisitor.cs +++ b/src/ShardingCore/Sharding/Parsers/Visitors/ShardingQueryPrepareVisitor.cs @@ -67,12 +67,12 @@ namespace ShardingCore.Sharding.Parsers.Visitors return base.VisitConstant(node); } #endif -#if EFCORE5 || EFCORE6 || EFCORE7 +#if EFCORE5 || EFCORE6 || EFCORE7 || EFCORE8 protected override Expression VisitExtension(Expression node) { if (node is QueryRootExpression queryRootExpression) { -#if EFCORE7 +#if EFCORE7 || EFCORE8 TryAddShardingEntities(queryRootExpression.ElementType, null); #else TryAddShardingEntities(queryRootExpression.EntityType.ClrType, null); diff --git a/src/ShardingCore/Sharding/ShardingExecutors/DefaultShardingQueryExecutor.cs b/src/ShardingCore/Sharding/ShardingExecutors/DefaultShardingQueryExecutor.cs index 8fa869d4..078273d3 100644 --- a/src/ShardingCore/Sharding/ShardingExecutors/DefaultShardingQueryExecutor.cs +++ b/src/ShardingCore/Sharding/ShardingExecutors/DefaultShardingQueryExecutor.cs @@ -121,7 +121,7 @@ namespace ShardingCore.Sharding.ShardingQueryExecutors return EnsureResultTypeMergeExecute(typeof(ContainsAsyncInMemoryMergeEngine<>), mergeQueryCompilerContext, async, cancellationToken); -#if EFCORE7 +#if EFCORE7|| EFCORE8 case nameof(RelationalQueryableExtensions.ExecuteUpdate): return EnsureResultTypeMergeExecute(typeof(ExecuteUpdateAsyncMemoryMergeEngine<>), mergeQueryCompilerContext, async, cancellationToken); diff --git a/src/ShardingCore/Sharding/ShardingExecutors/QueryCompilerContextFactory.cs b/src/ShardingCore/Sharding/ShardingExecutors/QueryCompilerContextFactory.cs index d1398aa6..9bf1f2df 100644 --- a/src/ShardingCore/Sharding/ShardingExecutors/QueryCompilerContextFactory.cs +++ b/src/ShardingCore/Sharding/ShardingExecutors/QueryCompilerContextFactory.cs @@ -119,7 +119,7 @@ namespace ShardingCore.Sharding.ShardingExecutors case nameof(Queryable.LongCount): case nameof(Queryable.Any): return _whereQueryableCombine; -#if EFCORE7 +#if EFCORE7|| EFCORE8 case nameof(RelationalQueryableExtensions.ExecuteUpdate): return _executeUpdateQueryableCombine; case nameof(RelationalQueryableExtensions.ExecuteDelete): diff --git a/src/ShardingCore/Sharding/Visitors/DbContextReplaceQueryableVisitor.cs b/src/ShardingCore/Sharding/Visitors/DbContextReplaceQueryableVisitor.cs index db76e0ce..85e93609 100644 --- a/src/ShardingCore/Sharding/Visitors/DbContextReplaceQueryableVisitor.cs +++ b/src/ShardingCore/Sharding/Visitors/DbContextReplaceQueryableVisitor.cs @@ -173,7 +173,7 @@ namespace ShardingCore.Core.Internal.Visitors } #endif -#if EFCORE5 || EFCORE6 ||EFCORE7 +#if EFCORE5 || EFCORE6 ||EFCORE7 ||EFCORE8 internal class DbContextReplaceQueryableVisitor : DbContextInnerMemberReferenceReplaceQueryableVisitor { private readonly DbContext _dbContext; @@ -191,12 +191,12 @@ namespace ShardingCore.Core.Internal.Visitors var dbContextDependencies = typeof(DbContext).GetTypePropertyValue(_dbContext, "DbContextDependencies") as IDbContextDependencies; -#if !EFCORE7 +#if !EFCORE7&& !EFCORE8 var targetIQ = (IQueryable)((IDbSetCache)_dbContext).GetOrAddSet(dbContextDependencies.SetSource, queryRootExpression.EntityType.ClrType); #endif -#if EFCORE7 +#if EFCORE7|| EFCORE8 var targetIQ = (IQueryable)((IDbSetCache)_dbContext).GetOrAddSet(dbContextDependencies.SetSource, @@ -209,12 +209,12 @@ namespace ShardingCore.Core.Internal.Visitors RootIsVisit = true; if (queryRootExpression is FromSqlQueryRootExpression fromSqlQueryRootExpression) { -#if !EFCORE7 +#if !EFCORE7 && !EFCORE8 var sqlQueryRootExpression = new FromSqlQueryRootExpression(newQueryable.Provider as IAsyncQueryProvider, queryRootExpression.EntityType, fromSqlQueryRootExpression.Sql, fromSqlQueryRootExpression.Argument); #endif -#if EFCORE7 +#if EFCORE7 || EFCORE8 var sqlQueryRootExpression = new FromSqlQueryRootExpression(newQueryable.Provider as IAsyncQueryProvider, fromSqlQueryRootExpression.EntityType, fromSqlQueryRootExpression.Sql, fromSqlQueryRootExpression.Argument); diff --git a/src/ShardingCore/Sharding/Visitors/Querys/QueryEntitiesVisitor.cs b/src/ShardingCore/Sharding/Visitors/Querys/QueryEntitiesVisitor.cs index 359f1faa..0abfb1e5 100644 --- a/src/ShardingCore/Sharding/Visitors/Querys/QueryEntitiesVisitor.cs +++ b/src/ShardingCore/Sharding/Visitors/Querys/QueryEntitiesVisitor.cs @@ -114,7 +114,7 @@ namespace ShardingCore.Core.Internal.Visitors.Querys } #endif -#if EFCORE5|| EFCORE6 || EFCORE7 +#if EFCORE5|| EFCORE6 || EFCORE7 || EFCORE8 /// /// 获取分表类型 /// @@ -137,7 +137,7 @@ namespace ShardingCore.Core.Internal.Visitors.Querys { if (node is QueryRootExpression queryRootExpression) { -#if EFCORE7 +#if EFCORE7 || EFCORE8 _shardingEntities.Add(queryRootExpression.ElementType); #else _shardingEntities.Add(queryRootExpression.EntityType.ClrType); diff --git a/src/ShardingCore/ShardingCore.csproj b/src/ShardingCore/ShardingCore.csproj index 7841de39..0cbe1138 100644 --- a/src/ShardingCore/ShardingCore.csproj +++ b/src/ShardingCore/ShardingCore.csproj @@ -1,9 +1,9 @@  - net6.0 - $(EFCORE7) + net8.0 + $(EFCORE8) true - TRACE;DEBUG;EFCORE7; + TRACE;DEBUG;EFCORE8; latest https://github.com/dotnetcore/sharding-core logo.png @@ -34,8 +34,8 @@ - - + + diff --git a/src7/ShardingCore7/ShardingCore7.csproj b/src7/ShardingCore7/ShardingCore7.csproj new file mode 100644 index 00000000..c267f945 --- /dev/null +++ b/src7/ShardingCore7/ShardingCore7.csproj @@ -0,0 +1,39 @@ + + + + net6.0 + $(EFCORE7) + true + TRACE;DEBUG;EFCORE7; + 9.0 + ShardingCore + ShardingCore + https://github.com/xuejmnet/sharding-core + + + + true + bin\Release\ShardingCore7.xml + + + + True + \ + + + + + + + + + + + + + + + + + +