Skip to content

Commit 69aa632

Browse files
authored
Merge pull request #59 from WeihanLi/dev
8.0.6.1
2 parents c479de5 + a44e4f8 commit 69aa632

File tree

4 files changed

+28
-11
lines changed

4 files changed

+28
-11
lines changed

build/version.props

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
<VersionMajor>8</VersionMajor>
44
<VersionMinor>0</VersionMinor>
55
<VersionPatch>6</VersionPatch>
6-
<VersionRevision></VersionRevision>
7-
<VersionPrefix>$(VersionMajor).$(VersionMinor).$(VersionPatch)</VersionPrefix>
8-
<VersionSuffix Condition="'$(Configuration)'=='DEBUG'">preview</VersionSuffix>
6+
<VersionRevision>1</VersionRevision>
7+
<VersionPrefix Condition="'$(VersionRevision)'=='0' or '$(VersionRevision)'==''">$(VersionMajor).$(VersionMinor).$(VersionPatch)</VersionPrefix>
8+
<VersionPrefix Condition="'$(VersionRevision)'!='0'">$(VersionMajor).$(VersionMinor).$(VersionPatch).$(VersionRevision)</VersionPrefix>
9+
<VersionSuffix Condition="'$(Configuration)'=='DEBUG'">dev</VersionSuffix>
910
</PropertyGroup>
1011
</Project>

samples/WeihanLi.EntityFramework.Sample/Program.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -375,7 +375,7 @@ private static void SoftDeleteTest()
375375
});
376376

377377
services.AddSingleton<IUserIdProvider, EnvironmentUserIdProvider>();
378-
services.AddAutoUpdateInterceptor();
378+
services.AddEFAutoUpdateInterceptor();
379379

380380
services.AddDbContext<SoftDeleteSampleContext>((provider, options) =>
381381
{

src/WeihanLi.EntityFramework/Audit/AuditInterceptor.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using Microsoft.EntityFrameworkCore;
22
using Microsoft.EntityFrameworkCore.Diagnostics;
33
using Microsoft.Extensions.DependencyInjection;
4-
using WeihanLi.Common;
54
using WeihanLi.Common.Models;
65

76
namespace WeihanLi.EntityFramework.Audit;
@@ -42,20 +41,22 @@ private void PreSaveChanges(DbContext dbContext)
4241

4342
foreach (var entityEntry in dbContext.ChangeTracker.Entries())
4443
{
45-
if (entityEntry.State == EntityState.Detached || entityEntry.State == EntityState.Unchanged)
44+
if (entityEntry.State is EntityState.Detached or EntityState.Unchanged)
4645
{
4746
continue;
4847
}
48+
4949
if (AuditConfig.Options.EntityFilters.Any(entityFilter =>
5050
entityFilter.Invoke(entityEntry) == false))
5151
{
5252
continue;
5353
}
54+
5455
AuditEntries.Add(new InternalAuditEntry(entityEntry));
5556
}
5657
}
5758

58-
private async Task PostSaveChanges(DbContext dbContext)
59+
private async Task PostSaveChanges()
5960
{
6061
if (AuditEntries is { Count: > 0 })
6162
{
@@ -116,14 +117,14 @@ await Task.WhenAll(
116117

117118
public override int SavedChanges(SaveChangesCompletedEventData eventData, int result)
118119
{
119-
PostSaveChanges(Guard.NotNull(eventData.Context)).GetAwaiter().GetResult();
120+
PostSaveChanges().GetAwaiter().GetResult();
120121
return base.SavedChanges(eventData, result);
121122
}
122123

123124
public override async ValueTask<int> SavedChangesAsync(SaveChangesCompletedEventData eventData, int result,
124125
CancellationToken cancellationToken = new CancellationToken())
125126
{
126-
await PostSaveChanges(Guard.NotNull(eventData.Context));
127+
await PostSaveChanges();
127128
return await base.SavedChangesAsync(eventData, result, cancellationToken);
128129
}
129130
}

src/WeihanLi.EntityFramework/EFExtensions.cs

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using System.Data;
77
using System.Linq.Expressions;
88
using WeihanLi.Common.Models;
9+
using WeihanLi.Common.Services;
910
using WeihanLi.EntityFramework.Audit;
1011
using WeihanLi.EntityFramework.Interceptors;
1112
using WeihanLi.EntityFramework.Services;
@@ -173,23 +174,37 @@ public static KeyEntry[] GetKeyValues(this EntityEntry entityEntry)
173174
return keyEntries;
174175
}
175176

176-
public static IServiceCollection AddAutoUpdateInterceptor(this IServiceCollection services)
177+
public static IServiceCollection AddEFAutoUpdateInterceptor(this IServiceCollection services)
178+
=> services.AddEFAutoUpdateInterceptor(ServiceLifetime.Scoped);
179+
180+
public static IServiceCollection AddEFAutoUpdateInterceptor(this IServiceCollection services,
181+
ServiceLifetime userProviderLifetime)
177182
{
178183
ArgumentNullException.ThrowIfNull(services);
179184

180185
services.TryAddScoped<AutoUpdateInterceptor>();
181186
services.TryAddEnumerable(ServiceDescriptor.Singleton<IEntitySavingHandler, SoftDeleteEntitySavingHandler>());
182187
services.TryAddEnumerable(ServiceDescriptor.Singleton<IEntitySavingHandler, UpdatedAtEntitySavingHandler>());
183-
services.TryAddEnumerable(ServiceDescriptor.Scoped<IEntitySavingHandler, UpdatedBySavingHandler>());
188+
services.TryAddEnumerable(ServiceDescriptor.Describe(typeof(IEntitySavingHandler), typeof(UpdatedBySavingHandler), userProviderLifetime));
184189

185190
return services;
186191
}
187192

193+
public static IServiceCollection AddEFAutoUpdateInterceptor<TUserProvider>(this IServiceCollection services,
194+
ServiceLifetime userProviderLifetime = ServiceLifetime.Scoped)
195+
where TUserProvider : class, IUserIdProvider
196+
{
197+
services.AddEFAutoUpdateInterceptor(userProviderLifetime)
198+
.TryAdd(ServiceDescriptor.Describe(typeof(IUserIdProvider), typeof(TUserProvider), userProviderLifetime));
199+
return services;
200+
}
201+
188202
public static IServiceCollection AddEFAutoAudit(this IServiceCollection services,
189203
Action<IAuditConfigBuilder> configAction)
190204
{
191205
ArgumentNullException.ThrowIfNull(configAction);
192206

207+
services.TryAddScoped<AuditInterceptor>();
193208
AuditConfig.Configure(services, configAction);
194209
return services;
195210
}

0 commit comments

Comments
 (0)