Ravendb没有回复正确的数字

时间:2014-04-15 09:59:03

标签: c# asp.net-mvc ravendb appharbor

我有一个非常简单的代码,可以使用聚合函数检索一些数据。 有一些奇怪的东西,当我运行项目localhost它返回正确的数字但是当我在appharbor上部署它时它总是返回零

这是我的代码的快照

        var document = new DocumentStore
        {
            ConnectionStringName = "RAVENHQ_CONNECTION_STRING"
        }; 
        document.Initialize();
        var session = document.OpenSession();
        int start = 0;
        long x = 0, y = 0, z = 0, l = 0;
        while (true)
        {
            var data = session.Query<DailyStat>().Take(1024).Skip(start).ToList();
            if (data.Count == 0)
                break;
            x += data.Sum(x => x.a);
            y += data.Sum(x => x.b);
            start += data.Count;
            z += data.Sum(x => x.c);
            l += data.Sum(x => x.d);
        }
        x /= 1000;
        y /= 1000;
        model.x = x.ToString();
        model.y = y.ToString();
        model.z = z.ToString();
        model.l = l.ToString();

当我在本地运行项目时,raven总是返回正确的数字但是当我在appharbor上部署项目时,数字显示为零

1 个答案:

答案 0 :(得分:1)

由于很多原因,这段代码很糟糕。首先,你不应该做那样的循环。 由于某种原因,RavenDB限制了从服务器获得的项目数量,试图通过循环读取事物来解决这个问题,这只是要求解决问题。 特别是,一旦您的数据大小足够大,您将从RavenDB中获得错误,因为您已通过配额。

然后,您正在加载所有这些值,只是为了获得总和。但这就是为什么我们有一个map / reduce for。