using System;
using System.Collections.Generic;
using System.Transactions;
namespace Abp.Domain.Uow
{
///
/// Used to get/set default options for a unit of work.
///
public interface IUnitOfWorkDefaultOptions
{
///
/// Scope option.
///
TransactionScopeOption Scope { get; set; }
///
/// Should unit of works be transactional.
/// Default: true.
///
bool IsTransactional { get; set; }
///
/// A boolean value indicates that System.Transactions.TransactionScope is available for current application.
/// Default: true.
///
bool IsTransactionScopeAvailable { get; set; }
///
/// Gets/sets a timeout value for unit of works.
///
TimeSpan? Timeout { get; set; }
///
/// Gets/sets isolation level of transaction.
/// This is used if is true.
///
IsolationLevel? IsolationLevel { get; set; }
///
/// Gets list of all data filter configurations.
///
IReadOnlyList Filters { get; }
///
/// A list of selectors to determine conventional Unit Of Work classes.
///
List> ConventionalUowSelectors { get; }
///
/// Registers a data filter to unit of work system.
///
/// Name of the filter.
/// Is filter enabled by default.
void RegisterFilter(string filterName, bool isEnabledByDefault);
///
/// Overrides a data filter definition.
///
/// Name of the filter.
/// Is filter enabled by default.
void OverrideFilter(string filterName, bool isEnabledByDefault);
}
}