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
+ \
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+