/
vshmidt
/
masstransit
Обзор
Документация
Войти
/
vshmidt
/
masstransit
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
src/Persistence/MassTransit.DapperIntegration/DapperIntegration/Configuration/DapperSagaRepositoryConfigurator.cs
45 строк
2 KB
Chris Patterson
Added ability to extend the DatabaseContext<T> provider for the Dapper saga repository to replace the implementation
10 сен 2024, 17:09
10 сен 2024, 17:09
a956dd6
Код
Авторство
О чём код?
#nullable enable namespace MassTransit.DapperIntegration.Configuration { using System.Collections.Generic; using System.Data; using MassTransit.Configuration; using MassTransit.Saga; using Microsoft.Extensions.DependencyInjection.Extensions; using Saga; public class DapperSagaRepositoryConfigurator<TSaga> : IDapperSagaRepositoryConfigurator<TSaga>, ISpecification where TSaga : class, ISaga { readonly string _connectionString; public DapperSagaRepositoryConfigurator(string connectionString, IsolationLevel isolationLevel = IsolationLevel.Serializable) { _connectionString = connectionString; IsolationLevel = isolationLevel; } public IsolationLevel IsolationLevel { get; set; } public DatabaseContextFactory<TSaga>? ContextFactory { get; set; } public IEnumerable<ValidationResult> Validate() { if (string.IsNullOrWhiteSpace(_connectionString)) yield return this.Failure("ConnectionString", "must be specified"); } public void Register(ISagaRepositoryRegistrationConfigurator<TSaga> configurator) { configurator.TryAddSingleton(new DapperOptions<TSaga>(_connectionString, IsolationLevel, ContextFactory)); configurator.RegisterLoadSagaRepository<TSaga, DapperSagaRepositoryContextFactory<TSaga>>(); configurator.RegisterQuerySagaRepository<TSaga, DapperSagaRepositoryContextFactory<TSaga>>(); configurator.RegisterSagaRepository<TSaga, DatabaseContext<TSaga>, SagaConsumeContextFactory<DatabaseContext<TSaga>, TSaga>, DapperSagaRepositoryContextFactory<TSaga>>(); } } }