Updated Repository (markdown)

2881099
2024-01-29 08:52:43 +08:00
parent f8066e5859
commit 0b9dfc93ee

@@ -121,28 +121,19 @@ repo.DbContextOptions.AuditValue 适合与 Ioc AddScoped 信息结合。
```csharp ```csharp
services.AddSingleton(fsql); services.AddSingleton(fsql);
services.AddScoped(r => services.AddScoped<Action<DbContextAuditValueEventArgs>>(r => e => {
{
var user = r.GetService<User>(); var user = r.GetService<User>();
var options = new RepositoryOptions();
options.AuditValue += (_, e) =>
{
if (user == null) return; if (user == null) return;
if (e.AuditValueType == AuditValueType.Insert && if (e.AuditValueType == AuditValueType.Insert &&
e.Object is IEntityCreated obj1 && obj1 != null) e.Object is IEntityCreated obj1 && obj1 != null) {
{
obj1.CreatedUserId = user.Id; obj1.CreatedUserId = user.Id;
obj1.CreatedUserName = user.Username; obj1.CreatedUserName = user.Username;
} }
if (e.AuditValueType == AuditValueType.Update && if (e.AuditValueType == AuditValueType.Update &&
e.Object is IEntityModified obj2 && obj2 != null) e.Object is IEntityModified obj2 && obj2 != null) {
{
obj2.ModifiedUserId = user.Id; obj2.ModifiedUserId = user.Id;
obj2.ModifiedUserName = user.Username; obj2.ModifiedUserName = user.Username;
} }
};
return options;
}); });
services.AddScoped(typeof(IBaseRepository<>), typeof(MyRepository<>)); services.AddScoped(typeof(IBaseRepository<>), typeof(MyRepository<>));
services.AddScoped(typeof(IBaseRepository<,>), typeof(MyRepository<,>)); services.AddScoped(typeof(IBaseRepository<,>), typeof(MyRepository<,>));
@@ -150,20 +141,15 @@ services.AddScoped(typeof(IBaseRepository<,>), typeof(MyRepository<,>));
//以下实现 MyRepository //以下实现 MyRepository
class MyRepository<TEntity, TKey> : BaseRepository<TEntity, TKey> where TEntity : class class MyRepository<TEntity, TKey> : BaseRepository<TEntity, TKey> where TEntity : class
{ {
public MyRepository(IFreeSql fsql, RepositoryOptions options) : base(fsql, null, null) public MyRepository(IFreeSql fsql, Action<DbContextAuditValueEventArgs> auditValue) : base(fsql, null, null)
{ {
uowManager?.Binding(this); uowManager?.Binding(this);
if (options != null) if (auditValue != null) DbContextOptions.AuditValue += (_, e) => auditValue(e);
{
DbContextOptions.NoneParameter = options.NoneParameter;
DbContextOptions.EnableGlobalFilter = options.EnableGlobalFilter;
DbContextOptions.AuditValue += options.AuditValueHandler;
}
} }
} }
class MyRepository<TEntity> : MyRepository<TEntity, long> where TEntity : class class MyRepository<TEntity> : MyRepository<TEntity, long> where TEntity : class
{ {
public MyRepository(IFreeSql fsql, RepositoryOptions options) : base(fsql, options) { } public MyRepository(IFreeSql fsql, Action<DbContextAuditValueEventArgs> auditValue) : base(fsql, auditValue) { }
} }
``` ```