Browse Source

Add provider check to SqliteBusyTimeout interceptor

Updated SqliteBusyTimeoutSaveChangesInterceptor to execute the PRAGMA command only if the DbContext is using the Sqlite provider. This prevents unnecessary execution for non-Sqlite databases.
pull/24448/head
SALİH ÖZKARA 10 months ago
committed by maliming
parent
commit
06469c528c
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 10
      framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/Interceptors/SqliteBusyTimeoutSaveChangesInterceptor.cs

10
framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/Interceptors/SqliteBusyTimeoutSaveChangesInterceptor.cs

@ -19,7 +19,7 @@ public class SqliteBusyTimeoutSaveChangesInterceptor : SaveChangesInterceptor
public override InterceptionResult<int> SavingChanges(DbContextEventData eventData, InterceptionResult<int> result) public override InterceptionResult<int> SavingChanges(DbContextEventData eventData, InterceptionResult<int> result)
{ {
if (eventData.Context != null) if (eventData.Context != null && IsSqlite(eventData.Context))
{ {
eventData.Context.Database.ExecuteSqlRaw(_pragmaCommand); eventData.Context.Database.ExecuteSqlRaw(_pragmaCommand);
} }
@ -29,11 +29,17 @@ public class SqliteBusyTimeoutSaveChangesInterceptor : SaveChangesInterceptor
public override async ValueTask<InterceptionResult<int>> SavingChangesAsync(DbContextEventData eventData, InterceptionResult<int> result, CancellationToken cancellationToken = default) public override async ValueTask<InterceptionResult<int>> SavingChangesAsync(DbContextEventData eventData, InterceptionResult<int> result, CancellationToken cancellationToken = default)
{ {
if (eventData.Context != null) if (eventData.Context != null && IsSqlite(eventData.Context))
{ {
await eventData.Context.Database.ExecuteSqlRawAsync(_pragmaCommand, cancellationToken: cancellationToken); await eventData.Context.Database.ExecuteSqlRawAsync(_pragmaCommand, cancellationToken: cancellationToken);
} }
return await base.SavingChangesAsync(eventData, result, cancellationToken); return await base.SavingChangesAsync(eventData, result, cancellationToken);
} }
private bool IsSqlite(DbContext context)
{
return context.Database.ProviderName != null && context.Database.ProviderName.Contains("Sqlite");
}
} }

Loading…
Cancel
Save