protected void TestInsertAndRetrieve(Func <T> creator = null)
        {
            var aggregate = Endpoint.ActOnSqlSession(ExecutionContainer,
                                                     session =>
            {
                var item = creator != null
                        ? creator()
                        : CreateAggregate();

                session.Save(item);
                return(item);
            });

            Endpoint.AssertOnSqlSessionThat(ExecutionContainer,
                                            s =>
            {
                var retrievedAggregate = s.Get <T>(aggregate.Id);
                retrievedAggregate.Should().BeEquivalentTo(aggregate, Options);
            });
        }