From 51cdf8aa230a0469e2181180c58693690ad3ac06 Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@users.noreply.github.com> Date: Mon, 29 Jan 2024 08:59:37 +0800 Subject: [PATCH] Updated Repository (markdown) --- Repository.md | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/Repository.md b/Repository.md index bfe4b76..b5f5145 100644 --- a/Repository.md +++ b/Repository.md @@ -121,18 +121,21 @@ repo.DbContextOptions.AuditValue 适合与 Ioc AddScoped 信息结合。 ```csharp services.AddSingleton(fsql); -services.AddScoped>(r => e => { - var user = r.GetService(); - if (user == null) return; - if (e.AuditValueType == AuditValueType.Insert && - e.Object is IEntityCreated obj1 && obj1 != null) { - obj1.CreatedUserId = user.Id; - obj1.CreatedUserName = user.Username; - } - if (e.AuditValueType == AuditValueType.Update && - e.Object is IEntityModified obj2 && obj2 != null) { - obj2.ModifiedUserId = user.Id; - obj2.ModifiedUserName = user.Username; +services.AddScoped(r => new MyRepositoryOptions +{ + AuditValue = e => { + var user = r.GetService(); + if (user == null) return; + if (e.AuditValueType == AuditValueType.Insert && + e.Object is IEntityCreated obj1 && obj1 != null) { + obj1.CreatedUserId = user.Id; + obj1.CreatedUserName = user.Username; + } + if (e.AuditValueType == AuditValueType.Update && + e.Object is IEntityModified obj2 && obj2 != null) { + obj2.ModifiedUserId = user.Id; + obj2.ModifiedUserName = user.Username; + } } }); services.AddScoped(typeof(IBaseRepository<>), typeof(MyRepository<>)); @@ -141,15 +144,18 @@ services.AddScoped(typeof(IBaseRepository<,>), typeof(MyRepository<,>)); //以下实现 MyRepository class MyRepository : BaseRepository where TEntity : class { - public MyRepository(IFreeSql fsql, Action auditValue) : base(fsql, null, null) + public MyRepository(IFreeSql fsql, MyRepositoryOptions options) : base(fsql, null, null) { - uowManager?.Binding(this); - if (auditValue != null) DbContextOptions.AuditValue += (_, e) => auditValue(e); + if (options?.AuditValue != null) DbContextOptions.AuditValue += (_, e) => options.AuditValue(e); } } class MyRepository : MyRepository where TEntity : class { - public MyRepository(IFreeSql fsql, Action auditValue) : base(fsql, auditValue) { } + public MyRepository(IFreeSql fsql, MyRepositoryOptions options) : base(fsql, options) { } +} +class MyRepositoryOptions +{ + public Action AuditValue { get; set; } } ```