feat: 完成dbfactory搭建

This commit is contained in:
chenchun
2024-11-19 12:05:26 +08:00
parent 5d2d269f11
commit 353a6b9d0c
4 changed files with 10 additions and 7 deletions

View File

@@ -5,6 +5,11 @@ namespace Yi.Framework.SqlSugarCore;
public interface ISqlSugarDbContextDependencies public interface ISqlSugarDbContextDependencies
{ {
/// <summary>
/// 执行顺序
/// </summary>
int ExecutionOrder { get; }
void OnSqlSugarClientConfig(ISqlSugarClient sqlSugarClient); void OnSqlSugarClientConfig(ISqlSugarClient sqlSugarClient);
void DataExecuted(object oldValue, DataAfterModel entityInfo); void DataExecuted(object oldValue, DataAfterModel entityInfo);
void DataExecuting(object oldValue, DataFilterModel entityInfo); void DataExecuting(object oldValue, DataFilterModel entityInfo);

View File

@@ -9,6 +9,8 @@ public abstract class SqlSugarDbContext : ISqlSugarDbContextDependencies
//属性注入 //属性注入
public IAbpLazyServiceProvider LazyServiceProvider { get; set; } public IAbpLazyServiceProvider LazyServiceProvider { get; set; }
protected ISqlSugarClient SqlSugarClient { get;private set; } protected ISqlSugarClient SqlSugarClient { get;private set; }
public int ExecutionOrder => 0;
public void OnSqlSugarClientConfig(ISqlSugarClient sqlSugarClient) public void OnSqlSugarClientConfig(ISqlSugarClient sqlSugarClient)
{ {
SqlSugarClient = sqlSugarClient; SqlSugarClient = sqlSugarClient;

View File

@@ -60,7 +60,7 @@ namespace Yi.Framework.SqlSugarCore
Action<object, DataAfterModel> dataExecuted = null; Action<object, DataAfterModel> dataExecuted = null;
Action<ISqlSugarClient> onSqlSugarClientConfig = null; Action<ISqlSugarClient> onSqlSugarClientConfig = null;
foreach (var dependency in SqlSugarDbContextDependencies) foreach (var dependency in SqlSugarDbContextDependencies.OrderBy(x=>x.ExecutionOrder))
{ {
onLogExecuting+= dependency.OnLogExecuting; onLogExecuting+= dependency.OnLogExecuting;
onLogExecuted += dependency.OnLogExecuted; onLogExecuted += dependency.OnLogExecuted;
@@ -144,7 +144,7 @@ namespace Yi.Framework.SqlSugarCore
//额外的实体服务需要这里配置, //额外的实体服务需要这里配置,
Action<PropertyInfo, EntityColumnInfo> entityService = null; Action<PropertyInfo, EntityColumnInfo> entityService = null;
foreach (var dependency in SqlSugarDbContextDependencies) foreach (var dependency in SqlSugarDbContextDependencies.OrderBy(x=>x.ExecutionOrder))
{ {
entityService += dependency.EntityService; entityService += dependency.EntityService;
} }

View File

@@ -13,8 +13,6 @@ namespace Yi.Framework.SqlSugarCore.Uow
{ {
public class UnitOfWorkSqlsugarDbContextProvider<TDbContext> : ISugarDbContextProvider<TDbContext> where TDbContext : ISqlSugarDbContext public class UnitOfWorkSqlsugarDbContextProvider<TDbContext> : ISugarDbContextProvider<TDbContext> where TDbContext : ISqlSugarDbContext
{ {
private readonly ISqlSugarDbConnectionCreator _dbConnectionCreator;
public ILogger<UnitOfWorkSqlsugarDbContextProvider<TDbContext>> Logger { get; set; } public ILogger<UnitOfWorkSqlsugarDbContextProvider<TDbContext>> Logger { get; set; }
public IServiceProvider ServiceProvider { get; set; } public IServiceProvider ServiceProvider { get; set; }
@@ -28,8 +26,7 @@ namespace Yi.Framework.SqlSugarCore.Uow
IUnitOfWorkManager unitOfWorkManager, IUnitOfWorkManager unitOfWorkManager,
IConnectionStringResolver connectionStringResolver, IConnectionStringResolver connectionStringResolver,
ICancellationTokenProvider cancellationTokenProvider, ICancellationTokenProvider cancellationTokenProvider,
ICurrentTenant currentTenant, ICurrentTenant currentTenant
ISqlSugarDbConnectionCreator dbConnectionCreator
) )
{ {
UnitOfWorkManager = unitOfWorkManager; UnitOfWorkManager = unitOfWorkManager;
@@ -37,7 +34,6 @@ namespace Yi.Framework.SqlSugarCore.Uow
CancellationTokenProvider = cancellationTokenProvider; CancellationTokenProvider = cancellationTokenProvider;
CurrentTenant = currentTenant; CurrentTenant = currentTenant;
Logger = NullLogger<UnitOfWorkSqlsugarDbContextProvider<TDbContext>>.Instance; Logger = NullLogger<UnitOfWorkSqlsugarDbContextProvider<TDbContext>>.Instance;
_dbConnectionCreator = dbConnectionCreator;
} }
//private static object _databaseApiLock = new object(); //private static object _databaseApiLock = new object();