public IInitialQueryBuilder Query(TransactionDomain domain) { if (_transactionDomain != domain) { throw new InvalidOperationException("The transaction does not have the specified domain."); } return(Query()); }
public IInitialQueryBuilder Query(TransactionDomain domain) { if (_currentTransaction.Value is null) { throw new InvalidOperationException("You can only start a query from withing a transaction context."); } return(_currentTransaction.Value.Query(domain)); }
public ITransaction BeginTransaction(TransactionDomain domain) { lock (_lock) { if (_currentTransaction.Value is not null) { throw new InvalidOperationException("You already have a transaction within this thread."); } var transaction = new Transaction(domain); transaction.OnClosed += (o, e) => OnClosedTransaction((Transaction)o, e); transaction.Start(); _currentTransaction.Value = transaction; return(transaction); } }
public TransactionEventArgs(TransactionDomain domain) => TransactionDomain = domain;
public T WithTransaction <T>(TransactionDomain domain, Func <ITransaction, T> function) { using (var transaction = BeginTransaction(domain)) { return(function(transaction)); } }
public void WithTransaction(TransactionDomain domain, Action <ITransaction> function) { using (var transaction = BeginTransaction(domain)) { function(transaction); } }
public Transaction(TransactionDomain domain) { _raisedEvents = new List <DomainEvent>(); _transactionDomain = domain; IsOpen = false; }