public void ExecuteStrategy() { int i = 0; try { ReprocessingConfiguration config = Domain.GetReprocessingConfiguration(); config.DefaultExecuteStrategy = typeof(TestExecuteStrategy); Domain.Execute( session => { new Foo(session) { Name = "test" }; i++; if (i < 5) { new Foo(session) { Name = "test" } } ; }); } catch { Assert.That(i, Is.EqualTo(2)); } }
/// <summary> /// Gets the reprocessing configuration. /// </summary> /// <param name="domain">The domain.</param> /// <returns>The reprocessing configuration.</returns> public static ReprocessingConfiguration GetReprocessingConfiguration(this Domain domain) { var result = domain.Extensions.Get <ReprocessingConfiguration>(); if (result == null) { result = ReprocessingConfiguration.Load(); domain.Extensions.Set(result); } return(result); }
/// <summary> /// Gets the reprocessing configuration from given <paramref name="configuration"/> and <paramref name="sectionName"/>. /// </summary> /// <param name="domain">The domain.</param> /// <param name="configuration">Non-default application configuration<see cref="System.Configuration.Configuration"/>.</param> /// <param name="sectionName">Non-default section.</param> /// <returns>The reprocessing configuration.</returns> public static ReprocessingConfiguration GetReprocessingConfiguration(this Domain domain, System.Configuration.Configuration configuration, string sectionName) { var result = domain.Extensions.Get <ReprocessingConfiguration>(); if (result == null) { result = ReprocessingConfiguration.Load(configuration, sectionName); domain.Extensions.Set(result); } return(result); }
internal static T ExecuteInternal <T>( this Domain domain, IsolationLevel isolationLevel, TransactionOpenMode?transactionOpenMode, IExecuteActionStrategy strategy, Func <Session, T> func) { ReprocessingConfiguration config = domain.GetReprocessingConfiguration(); if (strategy == null) { strategy = ExecuteActionStrategy.GetSingleton(config.DefaultExecuteStrategy); } if (transactionOpenMode == null) { transactionOpenMode = config.DefaultTransactionOpenMode; } return(strategy.Execute(new ExecutionContext <T>(domain, isolationLevel, transactionOpenMode.Value, func))); }