private List<LoadTestingStatisticsModel> GetStatistics(int unit)
        {
            TimeSpan ts = new TimeSpan(0, 0, unit);
            var res = new List<LoadTestingStatisticsModel>();

            var dbcoll = WorkflowInit.Provider.Store.GetCollection<LoadTestingOperationModel>("LoadTestingOperationModel");
            foreach (var op in dbcoll.FindAll())
            {
                op.Date = Floor(op.Date, ts);
                var r = res.FirstOrDefault(c => c.Date == op.Date);
                if (r == null)
                {
                    r = new LoadTestingStatisticsModel() { Date = op.Date };
                    res.Add(r);
                }

                var item = r.Items.FirstOrDefault(c => c.Type == op.Type);
                if (item == null)
                {
                    item = new LoadTestingStatisticItemModel()
                    {
                        Type = op.Type
                    };
                    r.Items.Add(item);
                }

                item.Duration += op.DurationMilliseconds;
                item.CheckDurationMinMax(op.DurationMilliseconds);
                item.Count++;
            }

            return res;
        }
        private List<LoadTestingStatisticsModel> GetStatistics(int unit)
        {
            TimeSpan ts = new TimeSpan(0, 0, unit);

            var res = new List<LoadTestingStatisticsModel>();

            using (var context = new DataModelDataContext())
            {
                foreach (var op in context.LoadTestingOperations)
                {
                    op.Date = Floor(op.Date, ts);
                    var r = res.FirstOrDefault(c => c.Date == op.Date);
                    if (r == null)
                    {
                        r = new LoadTestingStatisticsModel() { Date = op.Date };
                        res.Add(r);
                    }

                    var item = r.Items.FirstOrDefault(c => c.Type == op.Type);
                    if (item == null)
                    {
                        item = new LoadTestingStatisticItemModel()
                        {
                            Type = op.Type
                        };
                        r.Items.Add(item);
                    }

                    item.Duration += op.DurationMilliseconds;
                    item.CheckDurationMinMax(op.DurationMilliseconds);
                    item.Count++;
                }
            }

            return res;
        }
        private List<LoadTestingStatisticsModel> GetStatistics(int unit)
        {
            const int pageSize = 128;
            TimeSpan ts = new TimeSpan(0, 0, unit);

            var res = new List<LoadTestingStatisticsModel>();

            var session = WF.Sample.Business.Workflow.WorkflowInit.Provider.Store.OpenSession();

            long count = session.Query<LoadTestingOperationModel>().LongCount();
            int actual = 0;

            do
            {
                if(session.Advanced.NumberOfRequests >= session.Advanced.MaxNumberOfRequestsPerSession)
                {
                    session.Dispose();
                    session = WF.Sample.Business.Workflow.WorkflowInit.Provider.Store.OpenSession();
                }

                var ops = session.Advanced
                    .LuceneQuery<LoadTestingOperationModel>()
                    .Skip(actual)
                    .Take(pageSize);

                actual = actual + pageSize;

                foreach (var op in ops)
                {
                    op.Date = Floor(op.Date, ts);
                    var r = res.FirstOrDefault(c => c.Date == op.Date);
                    if (r == null)
                    {
                        r = new LoadTestingStatisticsModel() { Date = op.Date };
                        res.Add(r);
                    }

                    var item = r.Items.FirstOrDefault(c => c.Type == op.Type);
                    if (item == null)
                    {
                        item = new LoadTestingStatisticItemModel()
                        {
                            Type = op.Type
                        };
                        r.Items.Add(item);
                    }

                    item.Duration += op.DurationMilliseconds;
                    item.CheckDurationMinMax(op.DurationMilliseconds);
                    item.Count++;
                }

                if (actual >= count)
                    break;
            } while (true);

            session.Dispose();
            return res;
        }