UnitOfWorkDefaultOptions.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Reflection;
  5. using System.Transactions;
  6. using Abp.Application.Services;
  7. using Abp.Domain.Repositories;
  8. namespace Abp.Domain.Uow
  9. {
  10. internal class UnitOfWorkDefaultOptions : IUnitOfWorkDefaultOptions
  11. {
  12. public TransactionScopeOption Scope { get; set; }
  13. /// <inheritdoc/>
  14. public bool IsTransactional { get; set; }
  15. /// <inheritdoc/>
  16. public TimeSpan? Timeout { get; set; }
  17. /// <inheritdoc/>
  18. public bool IsTransactionScopeAvailable { get; set; }
  19. /// <inheritdoc/>
  20. public IsolationLevel? IsolationLevel { get; set; }
  21. public IReadOnlyList<DataFilterConfiguration> Filters => _filters;
  22. private readonly List<DataFilterConfiguration> _filters;
  23. public List<Func<Type, bool>> ConventionalUowSelectors { get; }
  24. public UnitOfWorkDefaultOptions()
  25. {
  26. _filters = new List<DataFilterConfiguration>();
  27. IsTransactional = true;
  28. Scope = TransactionScopeOption.Required;
  29. IsTransactionScopeAvailable = true;
  30. ConventionalUowSelectors = new List<Func<Type, bool>>
  31. {
  32. type => typeof(IRepository).IsAssignableFrom(type) ||
  33. typeof(IApplicationService).IsAssignableFrom(type)
  34. };
  35. }
  36. public void RegisterFilter(string filterName, bool isEnabledByDefault)
  37. {
  38. if (_filters.Any(f => f.FilterName == filterName))
  39. {
  40. throw new AbpException("There is already a filter with name: " + filterName);
  41. }
  42. _filters.Add(new DataFilterConfiguration(filterName, isEnabledByDefault));
  43. }
  44. public void OverrideFilter(string filterName, bool isEnabledByDefault)
  45. {
  46. _filters.RemoveAll(f => f.FilterName == filterName);
  47. _filters.Add(new DataFilterConfiguration(filterName, isEnabledByDefault));
  48. }
  49. }
  50. }