From ca37505f0dad01e9c830f6f8c164efea4091cadb Mon Sep 17 00:00:00 2001 From: igeekfan Date: Tue, 12 Mar 2024 23:21:26 +0800 Subject: [PATCH] add unitofworkmanger --- .../FreeSql/FreeSqlExtension.cs | 1 + .../FreeSql/UnitOfWorkManager.cs | 18 +++++++++++++ .../ServiceCollectionExtensions.cs | 27 ++++++++++++------- 3 files changed, 37 insertions(+), 9 deletions(-) create mode 100644 src/IGeekFan.FreeKit.Extras/FreeSql/UnitOfWorkManager.cs diff --git a/src/IGeekFan.FreeKit.Extras/FreeSql/FreeSqlExtension.cs b/src/IGeekFan.FreeKit.Extras/FreeSql/FreeSqlExtension.cs index ee85f81..c5db2ae 100644 --- a/src/IGeekFan.FreeKit.Extras/FreeSql/FreeSqlExtension.cs +++ b/src/IGeekFan.FreeKit.Extras/FreeSql/FreeSqlExtension.cs @@ -19,6 +19,7 @@ public static class FreeSqlExtension /// /// /// + /// /// public static FreeSqlBuilder UseConnectionString(this FreeSqlBuilder @this, IConfiguration configuration, string prefix = "ConnectionStrings") { diff --git a/src/IGeekFan.FreeKit.Extras/FreeSql/UnitOfWorkManager.cs b/src/IGeekFan.FreeKit.Extras/FreeSql/UnitOfWorkManager.cs new file mode 100644 index 0000000..4097823 --- /dev/null +++ b/src/IGeekFan.FreeKit.Extras/FreeSql/UnitOfWorkManager.cs @@ -0,0 +1,18 @@ +using FreeSql; + +namespace IGeekFan.FreeKit.Extras.FreeSql; + +/// +/// 支持泛型仓储的工作单元管理器 +/// +/// +public class UnitOfWorkManager : UnitOfWorkManager where T : class +{ + /// + /// + /// + /// + public UnitOfWorkManager(IFreeSql fsql) : base(fsql) + { + } +} \ No newline at end of file diff --git a/src/IGeekFan.FreeKit.Extras/Microsoft/Extensions/DependencyInjection/ServiceCollectionExtensions.cs b/src/IGeekFan.FreeKit.Extras/Microsoft/Extensions/DependencyInjection/ServiceCollectionExtensions.cs index dcc9ea4..4f30b20 100644 --- a/src/IGeekFan.FreeKit.Extras/Microsoft/Extensions/DependencyInjection/ServiceCollectionExtensions.cs +++ b/src/IGeekFan.FreeKit.Extras/Microsoft/Extensions/DependencyInjection/ServiceCollectionExtensions.cs @@ -8,12 +8,25 @@ namespace Microsoft.Extensions.DependencyInjection; public static class ServiceCollectionExtensions { + + public static IServiceCollection AddUnitOfWorkManager(this IServiceCollection serviceCollection) where T : class + { + serviceCollection.AddTransient(); + serviceCollection.TryAddScoped>(); + return serviceCollection; + } + + public static IServiceCollection AddUnitOfWorkManager(this IServiceCollection serviceCollection) + { + serviceCollection.AddTransient(); + serviceCollection.TryAddScoped(); + + return serviceCollection; + } + /// /// 统一配置服务,简化内部多个配置细节 /// - /// - /// 用户表类型,默认为guid - /// public static IServiceCollection AddFreeKitCore(this IServiceCollection services, Type? typeUserkey = null) { //(controller unitofwork fitler @@ -22,16 +35,12 @@ public static IServiceCollection AddFreeKitCore(this IServiceCollection services //审计仓储 //复合主键仓储) services.AddHttpContextAccessor(); - - services - .AddTransient() - .AddCurrentUser() + services.AddCurrentUser() .AddCurrentUserAccessor() .AddAuditRepostiory(typeUserkey) .AddCompositeRepostiory(); services.AddDefaultRepository(); - services.TryAddScoped(); return services; } @@ -76,11 +85,11 @@ public static IServiceCollection AddAuditRepostiory(this IServiceCollection serv { throw new NotSupportedException("用户ID仅支持Guid/long/int类型"); } + return services; } - /// /// 批量注入 IBaseRepository ///