public When_saving_two_aggregates_in_parallel()
{
_testStore = new TestInMemoryEventStore();
_rep1 = new CacheRepository(new Repository(_testStore), _testStore, new MemoryCache());
_aggregate1 = new TestAggregate(Guid.NewGuid());
_aggregate2 = new TestAggregate(Guid.NewGuid());
_rep1.Save(_aggregate1);
_rep1.Save(_aggregate2);
var t1 = new Task(() =>
{
for (var i = 0; i < 100; i++)
{
var aggregate = _rep1.Get<TestAggregate>(_aggregate1.Id);
aggregate.DoSomething();
_rep1.Save(aggregate);
}
});
var t2 = new Task(() =>
{
for (var i = 0; i < 100; i++)
{
var aggregate = _rep1.Get<TestAggregate>(_aggregate2.Id);
aggregate.DoSomething();
_rep1.Save(aggregate);
}
});
t1.Start();
t2.Start();
Task.WaitAll(t1, t2);
}