owner对象不添加到entitymetadata
This commit is contained in:
parent
60aa24cc95
commit
bde7aebc6b
|
@ -74,6 +74,12 @@ namespace Sample.MySql.Controllers
|
|||
|
||||
public IQueryable<SysTest> GetAll()
|
||||
{
|
||||
// DynamicShardingHelper.DynamicAppendDataSource(_shardingRuntimeContext,"ds9","链接字符串",true,true);
|
||||
//如果你已经添加好了的情况下并且没有生成对应的库和表想要生成表和库
|
||||
var dataSourceInitializer = _shardingRuntimeContext.GetDataSourceInitializer();
|
||||
dataSourceInitializer.InitConfigure("ds9",true,true);
|
||||
|
||||
|
||||
var shardingTableCreator = _shardingRuntimeContext.GetShardingTableCreator();
|
||||
var tableRouteManager = _shardingRuntimeContext.GetTableRouteManager();
|
||||
//系统的时间分片都会实现 ITailAppendable 如果不是系统的自定义的转成你自己的对象即可
|
||||
|
@ -109,6 +115,16 @@ namespace Sample.MySql.Controllers
|
|||
// {
|
||||
//
|
||||
// }
|
||||
var dateTime = new DateTime(2021,1,1);
|
||||
var x211 = await (from ut in _defaultTableDbContext.Set<SysTest>()
|
||||
join uu in _defaultTableDbContext.Set<SysUserLogByMonth>()
|
||||
on ut.Id equals uu.Id
|
||||
where uu.Time > dateTime
|
||||
select new { a = ut, b = uu }).Select(o=>new {x=o}).Select(o=>new{x=o})
|
||||
.Select(o => new
|
||||
{
|
||||
o.x.x.a.Id
|
||||
}).OrderBy(o => o.Id).ToListAsync();
|
||||
|
||||
var x2 = await (from ut in _defaultTableDbContext.Set<SysTest>()
|
||||
join uu in _defaultTableDbContext.Set<SysUserLogByMonth>()
|
||||
|
|
|
@ -59,5 +59,11 @@ namespace Sample.MySql.Shardings
|
|||
Console.WriteLine("AfterShardingRouteUnitFilter:"+shardingRouteUnits.Count);
|
||||
return base.AfterShardingRouteUnitFilter(dataSourceRouteResult, shardingRouteUnits);
|
||||
}
|
||||
|
||||
public override Func<string, bool> GetRouteFilter(object shardingKey, ShardingOperatorEnum shardingOperator, string shardingPropertyName)
|
||||
{
|
||||
Console.WriteLine(1);
|
||||
return base.GetRouteFilter(shardingKey, shardingOperator, shardingPropertyName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@ using ShardingCore.Bootstrappers;
|
|||
using ShardingCore.Core;
|
||||
using ShardingCore.Core.ModelCacheLockerProviders;
|
||||
using ShardingCore.Core.RuntimeContexts;
|
||||
using ShardingCore.DynamicDataSources;
|
||||
using ShardingCore.EFCores;
|
||||
using ShardingCore.Extensions;
|
||||
using ShardingCore.Helpers;
|
||||
|
@ -71,7 +72,7 @@ namespace Sample.MySql
|
|||
|
||||
|
||||
services.AddShardingDbContext<DefaultShardingDbContext>()
|
||||
.UseRouteConfig((sp,o) =>
|
||||
.UseRouteConfig((sp, o) =>
|
||||
{
|
||||
o.AddShardingTableRoute<DynamicTableRoute>();
|
||||
o.AddShardingTableRoute<SysUserLogByMonthRoute>();
|
||||
|
@ -85,7 +86,7 @@ namespace Sample.MySql
|
|||
new ParallelTableComparerType(typeof(TestMod)),
|
||||
new ParallelTableComparerType(typeof(TestModItem)),
|
||||
}));
|
||||
}).UseConfig((sp,o) =>
|
||||
}).UseConfig((sp, o) =>
|
||||
{
|
||||
// var memoryCache = sp.ApplicationServiceProvider.GetRequiredService<IMemoryCache>();
|
||||
// o.UseExecutorDbContextConfigure(b =>
|
||||
|
@ -97,7 +98,7 @@ namespace Sample.MySql
|
|||
o.CacheEntrySize = 1;
|
||||
o.CacheModelLockObjectSeconds = 10;
|
||||
o.CheckShardingKeyValueGenerated = false;
|
||||
var loggerFactory1= sp.GetService<ILoggerFactory>();
|
||||
var loggerFactory1 = sp.GetService<ILoggerFactory>();
|
||||
var loggerFactory2 = sp.ApplicationServiceProvider.GetService<ILoggerFactory>();
|
||||
// o.UseEntityFrameworkCoreProxies = true;
|
||||
o.ThrowIfQueryRouteNotMatch = false;
|
||||
|
@ -107,7 +108,7 @@ namespace Sample.MySql
|
|||
{
|
||||
builder.UseMySql(conStr, new MySqlServerVersion(new Version()))
|
||||
.UseLoggerFactory(loggerFactory1)
|
||||
.EnableSensitiveDataLogging();
|
||||
.EnableSensitiveDataLogging();
|
||||
//.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);
|
||||
});
|
||||
o.UseShardingTransaction((connection, builder) =>
|
||||
|
@ -116,7 +117,7 @@ namespace Sample.MySql
|
|||
.UseMySql(connection, new MySqlServerVersion(new Version()))
|
||||
.UseLoggerFactory(loggerFactory1)
|
||||
.EnableSensitiveDataLogging();
|
||||
//.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);
|
||||
//.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);
|
||||
});
|
||||
o.AddDefaultDataSource("ds0",
|
||||
"server=127.0.0.1;port=3306;database=dbdbd0;userid=root;password=root;");
|
||||
|
@ -129,7 +130,8 @@ namespace Sample.MySql
|
|||
{
|
||||
b.ReplaceService<IMigrationsSqlGenerator, ShardingMySqlMigrationsSqlGenerator>();
|
||||
});
|
||||
}).ReplaceService<IModelCacheLockerProvider,DicModelCacheLockerProvider>()
|
||||
}).ReplaceService<IModelCacheLockerProvider, DicModelCacheLockerProvider>()
|
||||
.ReplaceService<IDataSourceInitializer, DataSourceInitializer>()
|
||||
.AddShardingCore();
|
||||
// services.AddDbContext<DefaultShardingDbContext>(ShardingCoreExtension
|
||||
// .UseMutliDefaultSharding<DefaultShardingDbContext>);
|
||||
|
@ -182,15 +184,16 @@ namespace Sample.MySql
|
|||
// var shardingRuntimeContext = app.ApplicationServices.GetRequiredService<IShardingRuntimeContext>();
|
||||
// var entityMetadataManager = shardingRuntimeContext.GetEntityMetadataManager();
|
||||
// var entityMetadata = entityMetadataManager.TryGet<SysUserMod>();
|
||||
using (var scope = app.ApplicationServices.CreateScope())
|
||||
{
|
||||
var defaultShardingDbContext = scope.ServiceProvider.GetService<DefaultShardingDbContext>();
|
||||
// if (defaultShardingDbContext.Database.GetPendingMigrations().Any())
|
||||
{
|
||||
defaultShardingDbContext.Database.GenerateCreateScript();
|
||||
}
|
||||
}
|
||||
app.ApplicationServices.UseAutoTryCompensateTable();
|
||||
// using (var scope = app.ApplicationServices.CreateScope())
|
||||
// {
|
||||
// var defaultShardingDbContext = scope.ServiceProvider.GetService<DefaultShardingDbContext>();
|
||||
// // if (defaultShardingDbContext.Database.GetPendingMigrations().Any())
|
||||
// {
|
||||
// defaultShardingDbContext.Database.GenerateCreateScript();
|
||||
// }
|
||||
// }
|
||||
|
||||
// app.ApplicationServices.UseAutoTryCompensateTable();
|
||||
// using (var scope = app.ApplicationServices.CreateScope())
|
||||
// {
|
||||
// var defaultShardingDbContext = scope.ServiceProvider.GetService<OtherDbContext>();
|
||||
|
|
|
@ -22,7 +22,6 @@ using ShardingCore.Core.VirtualRoutes.Abstractions;
|
|||
using ShardingCore.Core.VirtualRoutes.TableRoutes.RouteTails.Abstractions;
|
||||
using ShardingCore.DynamicDataSources;
|
||||
using ShardingCore.Exceptions;
|
||||
|
||||
using ShardingCore.Sharding.Abstractions;
|
||||
using ShardingCore.Sharding.MergeEngines.ParallelControl;
|
||||
using ShardingCore.Sharding.ParallelTables;
|
||||
|
@ -32,7 +31,8 @@ using ShardingCore.TableCreator;
|
|||
|
||||
namespace ShardingCore.Core.RuntimeContexts
|
||||
{
|
||||
public sealed class ShardingRuntimeContext<TDbContext> : IShardingRuntimeContext<TDbContext> where TDbContext:IShardingDbContext
|
||||
public sealed class ShardingRuntimeContext<TDbContext> : IShardingRuntimeContext<TDbContext>
|
||||
where TDbContext : IShardingDbContext
|
||||
{
|
||||
private bool isInited = false;
|
||||
private object INIT_LOCK = new object();
|
||||
|
@ -74,16 +74,19 @@ namespace ShardingCore.Core.RuntimeContexts
|
|||
{
|
||||
GetRequiredService<IShardingBootstrapper>().AutoShardingCreate();
|
||||
}
|
||||
|
||||
private IDbContextTypeAware _dbContextTypeAware;
|
||||
|
||||
public IDbContextTypeAware GetDbContextTypeAware()
|
||||
{
|
||||
return _dbContextTypeAware??=GetRequiredService<IDbContextTypeAware>();
|
||||
return _dbContextTypeAware ??= GetRequiredService<IDbContextTypeAware>();
|
||||
}
|
||||
|
||||
private IModelCacheLockerProvider _modelCacheLockerProvider;
|
||||
|
||||
public IModelCacheLockerProvider GetModelCacheLockerProvider()
|
||||
{
|
||||
return _modelCacheLockerProvider??=GetRequiredService<IModelCacheLockerProvider>();
|
||||
return _modelCacheLockerProvider ??= GetRequiredService<IModelCacheLockerProvider>();
|
||||
}
|
||||
|
||||
|
||||
|
@ -92,16 +95,18 @@ namespace ShardingCore.Core.RuntimeContexts
|
|||
|
||||
public IShardingProvider GetShardingProvider()
|
||||
{
|
||||
return _shardingProvider??=GetRequiredService<IShardingProvider>();
|
||||
return _shardingProvider ??= GetRequiredService<IShardingProvider>();
|
||||
}
|
||||
|
||||
private IDbContextOptionBuilderCreator _dbContextOptionBuilderCreator;
|
||||
|
||||
public IDbContextOptionBuilderCreator GetDbContextOptionBuilderCreator()
|
||||
{
|
||||
return _dbContextOptionBuilderCreator??=GetRequiredService<IDbContextOptionBuilderCreator>();
|
||||
return _dbContextOptionBuilderCreator ??= GetRequiredService<IDbContextOptionBuilderCreator>();
|
||||
}
|
||||
|
||||
private ShardingConfigOptions _shardingConfigOptions;
|
||||
|
||||
public ShardingConfigOptions GetShardingConfigOptions()
|
||||
{
|
||||
return _shardingConfigOptions ??= GetRequiredService<ShardingConfigOptions>();
|
||||
|
@ -109,119 +114,138 @@ namespace ShardingCore.Core.RuntimeContexts
|
|||
|
||||
|
||||
private IShardingRouteConfigOptions _shardingRouteConfigOptions;
|
||||
|
||||
public IShardingRouteConfigOptions GetShardingRouteConfigOptions()
|
||||
{
|
||||
return _shardingRouteConfigOptions??= GetRequiredService<IShardingRouteConfigOptions>();
|
||||
return _shardingRouteConfigOptions ??= GetRequiredService<IShardingRouteConfigOptions>();
|
||||
}
|
||||
|
||||
private IShardingMigrationManager _shardingMigrationManager;
|
||||
|
||||
public IShardingMigrationManager GetShardingMigrationManager()
|
||||
{
|
||||
return _shardingMigrationManager??= GetRequiredService<IShardingMigrationManager>();
|
||||
return _shardingMigrationManager ??= GetRequiredService<IShardingMigrationManager>();
|
||||
}
|
||||
|
||||
|
||||
private IShardingComparer _shardingComparer;
|
||||
|
||||
public IShardingComparer GetShardingComparer()
|
||||
{
|
||||
return _shardingComparer??=GetRequiredService<IShardingComparer>();
|
||||
return _shardingComparer ??= GetRequiredService<IShardingComparer>();
|
||||
}
|
||||
|
||||
private IShardingCompilerExecutor _shardingCompilerExecutor;
|
||||
|
||||
public IShardingCompilerExecutor GetShardingCompilerExecutor()
|
||||
{
|
||||
return _shardingCompilerExecutor??=GetRequiredService<IShardingCompilerExecutor>();
|
||||
return _shardingCompilerExecutor ??= GetRequiredService<IShardingCompilerExecutor>();
|
||||
}
|
||||
|
||||
private IShardingReadWriteManager _shardingReadWriteManager;
|
||||
|
||||
public IShardingReadWriteManager GetShardingReadWriteManager()
|
||||
{
|
||||
return _shardingReadWriteManager??=GetRequiredService<IShardingReadWriteManager>();
|
||||
return _shardingReadWriteManager ??= GetRequiredService<IShardingReadWriteManager>();
|
||||
}
|
||||
|
||||
|
||||
private ITrackerManager _trackerManager;
|
||||
|
||||
public ITrackerManager GetTrackerManager()
|
||||
{
|
||||
return _trackerManager??=GetRequiredService<ITrackerManager>();
|
||||
return _trackerManager ??= GetRequiredService<ITrackerManager>();
|
||||
}
|
||||
|
||||
private IParallelTableManager _parallelTableManager;
|
||||
|
||||
public IParallelTableManager GetParallelTableManager()
|
||||
{
|
||||
return _parallelTableManager??=GetRequiredService<IParallelTableManager>();
|
||||
return _parallelTableManager ??= GetRequiredService<IParallelTableManager>();
|
||||
}
|
||||
|
||||
private IDbContextCreator _dbContextCreator;
|
||||
|
||||
public IDbContextCreator GetDbContextCreator()
|
||||
{
|
||||
return _dbContextCreator??=GetRequiredService<IDbContextCreator>();
|
||||
return _dbContextCreator ??= GetRequiredService<IDbContextCreator>();
|
||||
}
|
||||
|
||||
private IEntityMetadataManager _entityMetadataManager;
|
||||
|
||||
public IEntityMetadataManager GetEntityMetadataManager()
|
||||
{
|
||||
return _entityMetadataManager??=GetRequiredService<IEntityMetadataManager>();
|
||||
return _entityMetadataManager ??= GetRequiredService<IEntityMetadataManager>();
|
||||
}
|
||||
|
||||
private IVirtualDataSource _virtualDataSource;
|
||||
|
||||
public IVirtualDataSource GetVirtualDataSource()
|
||||
{
|
||||
return _virtualDataSource??=GetRequiredService<IVirtualDataSource>();
|
||||
return _virtualDataSource ??= GetRequiredService<IVirtualDataSource>();
|
||||
}
|
||||
|
||||
private IDataSourceRouteManager _dataSourceRouteManager;
|
||||
|
||||
public IDataSourceRouteManager GetDataSourceRouteManager()
|
||||
{
|
||||
return _dataSourceRouteManager??=GetRequiredService<IDataSourceRouteManager>();
|
||||
return _dataSourceRouteManager ??= GetRequiredService<IDataSourceRouteManager>();
|
||||
}
|
||||
|
||||
private ITableRouteManager _tableRouteManager;
|
||||
|
||||
public ITableRouteManager GetTableRouteManager()
|
||||
{
|
||||
return _tableRouteManager??=GetRequiredService<ITableRouteManager>();
|
||||
return _tableRouteManager ??= GetRequiredService<ITableRouteManager>();
|
||||
}
|
||||
|
||||
private IReadWriteConnectorFactory _readWriteConnectorFactory;
|
||||
|
||||
public IReadWriteConnectorFactory GetReadWriteConnectorFactory()
|
||||
{
|
||||
return _readWriteConnectorFactory??=GetRequiredService<IReadWriteConnectorFactory>();
|
||||
return _readWriteConnectorFactory ??= GetRequiredService<IReadWriteConnectorFactory>();
|
||||
}
|
||||
|
||||
private IShardingTableCreator _shardingTableCreator;
|
||||
|
||||
public IShardingTableCreator GetShardingTableCreator()
|
||||
{
|
||||
return _shardingTableCreator??=GetRequiredService<IShardingTableCreator>();
|
||||
return _shardingTableCreator ??= GetRequiredService<IShardingTableCreator>();
|
||||
}
|
||||
|
||||
private IRouteTailFactory _routeTailFactory;
|
||||
|
||||
public IRouteTailFactory GetRouteTailFactory()
|
||||
{
|
||||
return _routeTailFactory??=GetRequiredService<IRouteTailFactory>();
|
||||
return _routeTailFactory ??= GetRequiredService<IRouteTailFactory>();
|
||||
}
|
||||
|
||||
private IQueryTracker _queryTracker;
|
||||
|
||||
public IQueryTracker GetQueryTracker()
|
||||
{
|
||||
return _queryTracker??=GetRequiredService<IQueryTracker>();
|
||||
return _queryTracker ??= GetRequiredService<IQueryTracker>();
|
||||
}
|
||||
|
||||
private IUnionAllMergeManager _unionAllMergeManager;
|
||||
|
||||
public IUnionAllMergeManager GetUnionAllMergeManager()
|
||||
{
|
||||
return _unionAllMergeManager??=GetRequiredService<IUnionAllMergeManager>();
|
||||
return _unionAllMergeManager ??= GetRequiredService<IUnionAllMergeManager>();
|
||||
}
|
||||
|
||||
private IShardingPageManager _shardingPageManager;
|
||||
|
||||
public IShardingPageManager GetShardingPageManager()
|
||||
{
|
||||
return _shardingPageManager??=GetRequiredService<IShardingPageManager>();
|
||||
return _shardingPageManager ??= GetRequiredService<IShardingPageManager>();
|
||||
}
|
||||
|
||||
private IDataSourceInitializer _dataSourceInitializer;
|
||||
|
||||
public IDataSourceInitializer GetDataSourceInitializer()
|
||||
{
|
||||
return _dataSourceInitializer??=GetRequiredService<IDataSourceInitializer>();
|
||||
return _dataSourceInitializer ??= GetRequiredService<IDataSourceInitializer>();
|
||||
}
|
||||
|
||||
|
||||
|
@ -238,12 +262,17 @@ namespace ShardingCore.Core.RuntimeContexts
|
|||
foreach (var entityType in entityTypes)
|
||||
{
|
||||
trackerManager.AddDbContextModel(entityType.ClrType, entityType.FindPrimaryKey() != null);
|
||||
if (!entityMetadataManager.IsSharding(entityType.ClrType))
|
||||
var isOwned = entityType.IsOwned();
|
||||
if (!isOwned)
|
||||
{
|
||||
var entityMetadata = new EntityMetadata(entityType.ClrType);
|
||||
entityMetadataManager.AddEntityMetadata(entityMetadata);
|
||||
if (!entityMetadataManager.IsSharding(entityType.ClrType))
|
||||
{
|
||||
var entityMetadata = new EntityMetadata(entityType.ClrType);
|
||||
entityMetadataManager.AddEntityMetadata(entityMetadata);
|
||||
}
|
||||
|
||||
entityMetadataManager.TryInitModel(entityType);
|
||||
}
|
||||
entityMetadataManager.TryInitModel(entityType);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -254,6 +283,7 @@ namespace ShardingCore.Core.RuntimeContexts
|
|||
if (isInited)
|
||||
throw new InvalidOperationException("sharding runtime already build");
|
||||
}
|
||||
|
||||
private void CheckIfNotBuild()
|
||||
{
|
||||
if (!isInited)
|
||||
|
@ -283,6 +313,7 @@ namespace ShardingCore.Core.RuntimeContexts
|
|||
CheckIfNotBuild();
|
||||
return _serviceProvider.GetRequiredService<TService>();
|
||||
}
|
||||
|
||||
public IShardingRouteManager GetShardingRouteManager()
|
||||
{
|
||||
return GetRequiredService<IShardingRouteManager>();
|
||||
|
|
|
@ -246,6 +246,12 @@ namespace ShardingCore.Core.Internal.Visitors
|
|||
return expression is MethodCallExpression;
|
||||
}
|
||||
|
||||
public override Expression Visit(Expression node)
|
||||
{
|
||||
Console.WriteLine(1);
|
||||
return base.Visit(node);
|
||||
}
|
||||
|
||||
protected override Expression VisitMethodCall(MethodCallExpression node)
|
||||
{
|
||||
switch (node.Method.Name)
|
||||
|
@ -280,6 +286,7 @@ namespace ShardingCore.Core.Internal.Visitors
|
|||
_entityLambdaExpression = lambda;
|
||||
}
|
||||
}
|
||||
//todo
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue