Skip to content

Commit 8fe0cd7

Browse files
Merge branch 'release' into dependabot/nuget/GraphQL_Version-4.3.0
2 parents 48917c2 + 6c03eb5 commit 8fe0cd7

5 files changed

Lines changed: 27 additions & 27 deletions

File tree

src/Dotnet6.GraphQL4.Repositories.Abstractions/Transactions/TransactionScopeExecutor.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,12 @@ public TransactionScopeExecutor<T> WithConditionAsync(Func<CancellationToken, Ta
5858
return this;
5959
}
6060

61+
public T Execute()
62+
=> Execute(_operation);
63+
64+
public Task<T> ExecuteAsync(CancellationToken cancellationToken)
65+
=> ExecuteAsync(_operationAsync, cancellationToken);
66+
6167
public T Execute(Func<T> operation)
6268
{
6369
using var scope = CreateScope();
@@ -66,12 +72,6 @@ public T Execute(Func<T> operation)
6672
return result;
6773
}
6874

69-
public T Execute()
70-
=> Execute(_operation);
71-
72-
public Task<T> ExecuteAsync(CancellationToken cancellationToken)
73-
=> ExecuteAsync(_operationAsync, cancellationToken);
74-
7575
public async Task<T> ExecuteAsync(Func<CancellationToken, Task<T>> operationAsync, CancellationToken cancellationToken)
7676
{
7777
using var scope = CreateScope();

src/Dotnet6.GraphQL4.Repositories.Abstractions/UnitsOfWork/IUnitOfWork.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ namespace Dotnet6.GraphQL4.Repositories.Abstractions.UnitsOfWork
66
{
77
public interface IUnitOfWork
88
{
9-
TResult ExecuteInTransaction<TResult>(Func<TResult> operation, Func<bool> condition);
10-
Task<TResult> ExecuteInTransactionAsync<TResult>(Func<CancellationToken, Task<TResult>> operationAsync, Func<CancellationToken, Task<bool>> condition, CancellationToken cancellationToken);
9+
TResult ExecuteInTransactionScope<TResult>(Func<TResult> operation, Func<bool> condition);
10+
Task<TResult> ExecuteInTransactionScopeAsync<TResult>(Func<CancellationToken, Task<TResult>> operationAsync, Func<CancellationToken, Task<bool>> condition, CancellationToken cancellationToken);
1111

1212
bool SaveChanges();
1313
Task<bool> SaveChangesAsync(CancellationToken cancellationToken);
Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using System;
22
using System.Threading;
33
using System.Threading.Tasks;
4-
using System.Transactions;
54
using Dotnet6.GraphQL4.CrossCutting.Notifications;
65
using Dotnet6.GraphQL4.Repositories.Abstractions.DependencyInjection.Options;
76
using Dotnet6.GraphQL4.Repositories.Abstractions.Transactions.Extensions;
@@ -21,46 +20,46 @@ public class UnitOfWork : IUnitOfWork
2120

2221
public UnitOfWork(
2322
DbContext dbContext,
24-
IOptionsMonitor<ApplicationTransactionOptions> optionsMonitor,
23+
IOptionsSnapshot<ApplicationTransactionOptions> optionsMonitor,
2524
INotificationContext notificationContext)
2625
{
2726
_dbContext = dbContext;
28-
_options = optionsMonitor.CurrentValue;
27+
_options = optionsMonitor.Value;
2928
_database = _dbContext.Database;
3029
_notificationContext = notificationContext;
3130
}
3231

33-
public TResult ExecuteInTransaction<TResult>(Func<TResult> operation, Func<bool> condition)
34-
=> CreateExecutionStrategy().Execute(() => ExecuteWithScope(operation, condition));
32+
public TResult ExecuteInTransactionScope<TResult>(Func<TResult> operation, Func<bool> condition)
33+
=> CreateExecutionStrategy().Execute(() => ExecuteInScope(operation, condition));
3534

36-
public Task<TResult> ExecuteInTransactionAsync<TResult>(Func<CancellationToken, Task<TResult>> operationAsync, Func<CancellationToken, Task<bool>> condition, CancellationToken cancellationToken)
37-
=> CreateExecutionStrategy().ExecuteAsync(ct => ExecuteWithScopeAsync(operationAsync, condition, ct), cancellationToken);
35+
public Task<TResult> ExecuteInTransactionScopeAsync<TResult>(Func<CancellationToken, Task<TResult>> operationAsync, Func<CancellationToken, Task<bool>> condition, CancellationToken cancellationToken)
36+
=> CreateExecutionStrategy().ExecuteAsync(ct => ExecuteInScopeAsync(operationAsync, condition, ct), cancellationToken);
3837

39-
private Task<TResult> ExecuteWithScopeAsync<TResult>(Func<CancellationToken, Task<TResult>> operationAsync, Func<CancellationToken, Task<bool>> condition, CancellationToken cancellationToken)
38+
private Task<TResult> ExecuteInScopeAsync<TResult>(Func<CancellationToken, Task<TResult>> operationAsync, Func<CancellationToken, Task<bool>> condition, CancellationToken cancellationToken)
4039
=> operationAsync
4140
.BeginTransactionScope()
42-
.WithScopeOption(TransactionScopeOption.Required)
41+
.WithScopeOption()
4342
.WithOptions(options => options.IsolationLevel = _options.IsolationLevel)
44-
.WithScopeAsyncFlowOption(TransactionScopeAsyncFlowOption.Enabled)
43+
.WithScopeAsyncFlowOption()
4544
.WithConditionAsync(condition ?? (_ => _notificationContext.AllValidAsync))
4645
.ExecuteAsync(cancellationToken);
4746

48-
private TResult ExecuteWithScope<TResult>(Func<TResult> operation, Func<bool> condition)
47+
private TResult ExecuteInScope<TResult>(Func<TResult> operation, Func<bool> condition)
4948
=> operation
5049
.BeginTransactionScope()
51-
.WithScopeOption(TransactionScopeOption.Required)
50+
.WithScopeOption()
5251
.WithOptions(options => options.IsolationLevel = _options.IsolationLevel)
53-
.WithScopeAsyncFlowOption(TransactionScopeAsyncFlowOption.Enabled)
52+
.WithScopeAsyncFlowOption()
5453
.WithCondition(condition ?? (() => _notificationContext.AllValid))
5554
.Execute();
5655

5756
private IExecutionStrategy CreateExecutionStrategy()
5857
=> _database.CreateExecutionStrategy();
5958

6059
public bool SaveChanges()
61-
=> _dbContext.SaveChanges(false) > default(int);
60+
=> _dbContext.SaveChanges(false) > 0;
6261

6362
public async Task<bool> SaveChangesAsync(CancellationToken cancellationToken)
64-
=> await _dbContext.SaveChangesAsync(false, cancellationToken) > default(int);
63+
=> await _dbContext.SaveChangesAsync(false, cancellationToken) > 0;
6564
}
6665
}

src/Dotnet6.GraphQL4.Store.Repositories/Contexts/StoreDbContext.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,12 @@ public StoreDbContext(
2121
DbContextOptions options,
2222
ILoggerFactory loggerFactory,
2323
IConfiguration configuration,
24-
IOptionsMonitor<SqlServerRetryingOptions> optionsMonitor)
24+
IOptionsSnapshot<SqlServerRetryingOptions> optionsMonitor)
2525
: base(options)
2626
{
2727
_loggerFactory = loggerFactory;
2828
_configuration = configuration;
29-
_options = optionsMonitor.CurrentValue;
29+
_options = optionsMonitor.Value;
3030
}
3131

3232
public DbSet<Product> Products { get; set; }
@@ -45,7 +45,8 @@ protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
4545
{
4646
if (optionsBuilder.IsConfigured) return;
4747

48-
optionsBuilder.EnableDetailedErrors()
48+
optionsBuilder
49+
.EnableDetailedErrors()
4950
.EnableSensitiveDataLogging()
5051
.UseSqlServer(
5152
connectionString:_configuration.GetConnectionString("DefaultConnection"),

src/Dotnet6.GraphQL4.Store.Services/ProductService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public Task<Review> AddReviewAsync(ReviewModel reviewModel, CancellationToken ca
3030
return default;
3131
}
3232

33-
return UnitOfWork.ExecuteInTransactionAsync(
33+
return UnitOfWork.ExecuteInTransactionScopeAsync(
3434
operationAsync: async ct =>
3535
{
3636
var product = await Repository.GetByIdAsync(

0 commit comments

Comments
 (0)