private void Do([NotNull] Action <ISession> procedure, RequiredContext requiredContext, [CanBeNull] IDetachedState detachedState) { using (ISession session = OpenSession()) { AssertRequiredContext(session, requiredContext); detachedState?.ReattachState(this); try { procedure(session); } catch (Exception e) { // Roll back, if this is the outermost transaction if (session is SessionWrapper sessionWrapper && sessionWrapper.IsOutermost) { _msg.Debug("Rolling back nHibernate transaction due to exception.", e); session.Transaction.Rollback(); } throw; } } }
private void AssertRequiredContext([NotNull] ISession session, RequiredContext requiredContext) { switch (requiredContext) { case RequiredContext.Transaction: AssertInTransaction(session); break; case RequiredContext.LongSessionOrTransaction: AssertSessionContextDefined(session); break; } }
private void Do([NotNull] Action <ISession> procedure, RequiredContext requiredContext, params Entity[] entities) { Do(procedure, requiredContext, GetAsDetachedState(entities)); }
public ArchivedVoteCommentRule() : base("Archived Vote Rule", "2.9.1", RuleScope.Vote) { RequiredContext.Add("Submission", typeof(Domain.Models.Submission)); }
public CreateSetRule() : base("Set Create", "8.1", RuleScope.CreateSet) { RequiredContext.Add("Set", typeof(Domain.Models.Set)); }
public SuperheroesController(RequiredContext context) { _context = context; }