添加当前dbcontext是否是执行的dbcontext的属性
This commit is contained in:
parent
a402ccd674
commit
8a3ff2721d
|
@ -1,6 +1,8 @@
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using ShardingCore.Extensions;
|
||||||
|
using ShardingCore.Extensions.ShardingQueryableExtensions;
|
||||||
|
|
||||||
namespace Sample.AutoCreateIfPresent.Controllers;
|
namespace Sample.AutoCreateIfPresent.Controllers;
|
||||||
|
|
||||||
|
|
|
@ -61,14 +61,13 @@ namespace Sample.MySql.Controllers
|
||||||
|
|
||||||
public IQueryable<SysTest> GetAll()
|
public IQueryable<SysTest> GetAll()
|
||||||
{
|
{
|
||||||
var shardingRouteManager = _shardingRuntimeContext.GetShardingRouteManager();
|
var shardingTableCreator = _shardingRuntimeContext.GetShardingTableCreator();
|
||||||
// var shardingTableCreator = _shardingRuntimeContext.GetShardingTableCreator();
|
var tableRouteManager = _shardingRuntimeContext.GetTableRouteManager();
|
||||||
// var tableRouteManager = _shardingRuntimeContext.GetTableRouteManager();
|
//系统的时间分片都会实现 ITailAppendable 如果不是系统的自定义的转成你自己的对象即可
|
||||||
// //系统的时间分片都会实现 ITailAppendable 如果不是系统的自定义的转成你自己的对象即可
|
var virtualTableRoute = (ITailAppendable)tableRouteManager.GetRoute(typeof(SysUserMod));
|
||||||
// var virtualTableRoute = (ITailAppendable)tableRouteManager.GetRoute(typeof(SysUserMod));
|
//一定要先在路由里面添加尾巴
|
||||||
// //一定要先在路由里面添加尾巴
|
virtualTableRoute.Append("20220921");
|
||||||
// virtualTableRoute.Append("20220921");
|
shardingTableCreator.CreateTable<SysUserMod>("ds0","20220921");
|
||||||
// shardingTableCreator.CreateTable<SysUserMod>("ds0","20220921");
|
|
||||||
return _defaultTableDbContext.Set<SysTest>();
|
return _defaultTableDbContext.Set<SysTest>();
|
||||||
}
|
}
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
|
|
|
@ -20,7 +20,7 @@ namespace ShardingCore.Extensions
|
||||||
{
|
{
|
||||||
public static class ShardingDbContextExtension
|
public static class ShardingDbContextExtension
|
||||||
{
|
{
|
||||||
public static IShardingDbContextExecutor? CreateShardingDbContextExecutor<TDbContext>(
|
public static IShardingDbContextExecutor CreateShardingDbContextExecutor<TDbContext>(
|
||||||
this TDbContext shellDbContext)
|
this TDbContext shellDbContext)
|
||||||
where TDbContext:DbContext,IShardingDbContext
|
where TDbContext:DbContext,IShardingDbContext
|
||||||
{
|
{
|
||||||
|
|
|
@ -25,6 +25,7 @@ namespace ShardingCore.Sharding
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract class AbstractShardingDbContext : DbContext, IShardingDbContext
|
public abstract class AbstractShardingDbContext : DbContext, IShardingDbContext
|
||||||
{
|
{
|
||||||
|
private bool _createExecutor = false;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 构造函数
|
/// 构造函数
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -34,11 +35,21 @@ namespace ShardingCore.Sharding
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private IShardingDbContextExecutor _shardingDbContextExecutor;
|
private IShardingDbContextExecutor? _shardingDbContextExecutor;
|
||||||
public IShardingDbContextExecutor GetShardingExecutor()
|
public IShardingDbContextExecutor GetShardingExecutor()
|
||||||
{
|
{
|
||||||
return _shardingDbContextExecutor??=this.CreateShardingDbContextExecutor();
|
if (!_createExecutor)
|
||||||
|
{
|
||||||
|
_shardingDbContextExecutor=this.CreateShardingDbContextExecutor();
|
||||||
|
_createExecutor = true;
|
||||||
}
|
}
|
||||||
|
return _shardingDbContextExecutor;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 当前dbcontext是否是执行的dbcontext
|
||||||
|
/// </summary>
|
||||||
|
public bool IsExecutor => GetShardingExecutor() == default;
|
||||||
|
|
||||||
public override void Dispose()
|
public override void Dispose()
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue