dotnetcore / dotnetcore/sharding-core
job [LogTableRoute:Log] invoke fail : System.ObjectDisposedException: Cannot access a disposed object.
- Dominant language
- C#
- Stars
- 1.3k
- Forks
- 183
- Avg merge
- 7h 43m
- Merged PRs (30d)
- 1
Description
我针对我的日志表Log进行了每日分表,我用的ShardingCore的库是7.6.1.10,对应ef core是6.x的版本;
LogTableRoute.cs
`public class LogTableRoute : AbstractSimpleShardingDayKeyDateTimeVirtualTableRoute
//AbstractSimpleShardingMonthKeyDateTimeVirtualTableRoute
{
public override bool AutoCreateTableByTime()
{
return true;
}
public override void Configure(EntityMetadataTableBuilder builder)
{
builder.ShardingProperty(o => o.TimeStamp);
builder.AutoCreateTable(true);//自动建表
builder.TableSeparator("_");//间隔符
}
public override DateTime GetBeginTime()
{
return new DateTime(2023, 12, 28);
}
}`
依赖注入的地方是:
`
///
/// 注册日志到数据库模块
///
///
/// myslq的连接字符串,暂时只支持mysql
///
///
public static IServiceCollection AddLogDatabaseSharding(this IServiceCollection services, string connectionString)
{
if (services == null)
{
throw new ArgumentNullException(nameof(services));
}
//参考的分库分表开源库是:https://github.com/dotnetcore/sharding-core
//参考文档:https://xuejm.gitee.io/sharding-core-doc/sharding-table/init/
services.AddDatabaseAccessor(options => {
// 配置默认数据库
options.AddDb((sp, o) => {
ShardingCoreExtension.UseDefaultSharding(sp, o);
});
});
//依赖注入
services.AddShardingDbContext()
.UseRouteConfig(op => {
op.AddShardingTableRoute();
})
.UseConfig((sp, op) => {
op.UseShardingQuery((con, b) => {
b.UseMySql(con, new MySqlServerVersion(new Version()));
//.UseLoggerFactory(efLogger);
});
op.UseShardingTransaction((con, b) => {
b.UseMySql(con, new MySqlServerVersion(new Version()));
//.UseLoggerFactory(efLogger);
});
op.AddDefaultDataSource("ds0", connectionString);
op.UseShardingMigrationConfigure(b => {
b.ReplaceService();
});
}).ReplaceService().AddShardingCore();
return services;
}
`
以下是报错信息
> info: 2024-09-24 10:06:49.9177837 +08:00 Tuesday L ShardingCore.Jobs.JobRunnerService[0] #113
> ### job [LogTableRoute:Log] start success.
> fail: 2024-09-24 10:06:49.9183123 +08:00 Tuesday L ShardingCore.Jobs.JobRunnerService[0] #113
> ### job [LogTableRoute:Log] invoke fail : System.ObjectDisposedException: Cannot access a disposed object.
> Object name: 'LoggerFactory'.
> at Microsoft.Extensions.Logging.LoggerFactory.CreateLogger(String categoryName)
> at Microsoft.Extensions.Logging.Logger`1..ctor(ILoggerFactory factory)
> at System.RuntimeMethodHandle.InvokeMethod(Object target, Span`1& arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
> at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
> at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context)
> at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
> at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite callSite, RuntimeResolverContext context)
> at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
> at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.Resolve(ServiceCallSite callSite, ServiceProviderEngineScope scope)
> at Microsoft.Extensions.DependencyInjection.ServiceProvider.CreateServiceAccessor(Type serviceType)
> at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
> at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Type serviceType, ServiceProviderEngineScope serviceProviderEngineScope)
> at ShardingCore.Core.ServiceProviders.ShardingProvider.GetService(Type serviceType, Boolean tryApplicationServiceProvider)
> at ShardingCore.Core.ServiceProviders.ShardingProvider.GetService[TService](Boolean tryApplicationServiceProvider)
> at ShardingCore.VirtualRoutes.Abstractions.AbstractShardingAutoCreateOperatorVirtualTableRoute`2.ExecuteAsync()
> at ShardingCore.Jobs.JobRunnerService.<>c__DisplayClass9_0.<b__0>d.MoveNext().
>
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.