feat: 添加db作用域模式
This commit is contained in:
@@ -11,22 +11,23 @@ namespace Yi.Framework.SqlSugarCore
|
|||||||
{
|
{
|
||||||
public static class SqlsugarCoreExtensions
|
public static class SqlsugarCoreExtensions
|
||||||
{
|
{
|
||||||
public static IServiceCollection AddYiDbContext<DbContext>(this IServiceCollection service) where DbContext : class, ISqlSugarDbContext
|
public static IServiceCollection AddYiDbContext<DbContext>(this IServiceCollection service, ServiceLifetime serviceLifetime = ServiceLifetime.Transient) where DbContext : class, ISqlSugarDbContext
|
||||||
{
|
{
|
||||||
service.Replace(new ServiceDescriptor(typeof(ISqlSugarDbContext), typeof(DbContext), ServiceLifetime.Transient));
|
service.Replace(new ServiceDescriptor(typeof(ISqlSugarDbContext), typeof(DbContext), serviceLifetime));
|
||||||
return service;
|
return service;
|
||||||
}
|
}
|
||||||
public static IServiceCollection TryAddYiDbContext<DbContext>(this IServiceCollection service) where DbContext : class, ISqlSugarDbContext
|
public static IServiceCollection TryAddYiDbContext<DbContext>(this IServiceCollection service, ServiceLifetime serviceLifetime = ServiceLifetime.Transient) where DbContext : class, ISqlSugarDbContext
|
||||||
{
|
{
|
||||||
service.TryAdd(new ServiceDescriptor(typeof(ISqlSugarDbContext), typeof(DbContext), ServiceLifetime.Transient));
|
service.TryAdd(new ServiceDescriptor(typeof(ISqlSugarDbContext), typeof(DbContext), serviceLifetime));
|
||||||
return service;
|
return service;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static IServiceCollection AddYiDbContext<DbContext>(this IServiceCollection service,Action<DbConnOptions> options) where DbContext : class, ISqlSugarDbContext
|
public static IServiceCollection AddYiDbContext<DbContext>(this IServiceCollection service, Action<DbConnOptions> options) where DbContext : class, ISqlSugarDbContext
|
||||||
{
|
{
|
||||||
|
|
||||||
service.Configure<DbConnOptions>(ops => {
|
service.Configure<DbConnOptions>(ops =>
|
||||||
|
{
|
||||||
options.Invoke(ops);
|
options.Invoke(ops);
|
||||||
});
|
});
|
||||||
service.AddYiDbContext<DbContext>();
|
service.AddYiDbContext<DbContext>();
|
||||||
|
|||||||
@@ -52,13 +52,13 @@ namespace Yi.Framework.SqlSugarCore.Uow
|
|||||||
|
|
||||||
|
|
||||||
var unitOfWork = UnitOfWorkManager.Current;
|
var unitOfWork = UnitOfWorkManager.Current;
|
||||||
if (unitOfWork == null || unitOfWork.Options.IsTransactional == false)
|
if (unitOfWork == null /*|| unitOfWork.Options.IsTransactional == false*/)
|
||||||
{
|
{
|
||||||
if (ContextInstance.Current is null)
|
//if (ContextInstance.Current is null)
|
||||||
{
|
//{
|
||||||
ContextInstance.Current = (TDbContext)ServiceProvider.GetRequiredService<ISqlSugarDbContext>();
|
// ContextInstance.Current = ;
|
||||||
}
|
//}
|
||||||
var dbContext = (TDbContext)ContextInstance.Current;
|
var dbContext = (TDbContext)ServiceProvider.GetRequiredService<ISqlSugarDbContext>();
|
||||||
//提高体验,取消工作单元强制性
|
//提高体验,取消工作单元强制性
|
||||||
//throw new AbpException("A DbContext can only be created inside a unit of work!");
|
//throw new AbpException("A DbContext can only be created inside a unit of work!");
|
||||||
//如果不启用工作单元,创建一个新的db,不开启事务即可
|
//如果不启用工作单元,创建一个新的db,不开启事务即可
|
||||||
@@ -81,6 +81,7 @@ namespace Yi.Framework.SqlSugarCore.Uow
|
|||||||
CreateDbContextAsync(unitOfWork, connectionStringName, connectionString).Result
|
CreateDbContextAsync(unitOfWork, connectionStringName, connectionString).Result
|
||||||
);
|
);
|
||||||
|
|
||||||
|
await Console.Out.WriteLineAsync(">>>----------------实例化了db"+ ((SqlSugarDatabaseApi)databaseApi).DbContext.SqlSugarClient.ContextID.ToString());
|
||||||
//创建的db加入到当前工作单元中
|
//创建的db加入到当前工作单元中
|
||||||
unitOfWork.AddDatabaseApi(dbContextKey, databaseApi);
|
unitOfWork.AddDatabaseApi(dbContextKey, databaseApi);
|
||||||
|
|
||||||
|
|||||||
@@ -55,9 +55,10 @@ namespace Yi.Abp.Application.Services
|
|||||||
//魔改
|
//魔改
|
||||||
// 用户体验优先,万金油模式,支持高并发。支持单、多线程并发安全,支持多线程工作单元,支持多线程无工作单元,支持。。。
|
// 用户体验优先,万金油模式,支持高并发。支持单、多线程并发安全,支持多线程工作单元,支持多线程无工作单元,支持。。。
|
||||||
// 自动在各个情况处理db客户端最优解之一
|
// 自动在各个情况处理db客户端最优解之一
|
||||||
int i = 10;
|
int i = 3;
|
||||||
List<Task> tasks = new List<Task>();
|
List<Task> tasks = new List<Task>();
|
||||||
|
await sqlSugarRepository.GetListAsync();
|
||||||
|
await sqlSugarRepository.GetListAsync();
|
||||||
while (i > 0)
|
while (i > 0)
|
||||||
{
|
{
|
||||||
tasks.Add(Task.Run(async () =>
|
tasks.Add(Task.Run(async () =>
|
||||||
|
|||||||
Reference in New Issue
Block a user