Два разных запроса - возвращение противоречивых результатов - PullRequest
0 голосов
/ 12 января 2012

Я получаю два разных результата, хотя я ожидаю, что результат будет одинаковым, независимо от того, как я запрашиваю базу данных.В результате запроса 1 я получаю список пар значений, таких как

NY 3

AL 6

WI 5

и т.д ..

Но когда я запускаю запрос 2, чтобы проверить, точны ли мои значения или нет ... и когда я специально запускаю и получаю по штату "NY", я получаю совершенно другое число для NY.Они просто не подходят ни для одного штата.Я больше не уверен, какой номер является точным.

Запрос 1:

//Edit
int countTheaters =  session.Query<Theaters>()
                        .Count();

var TheaterByStateList = session.Query<Theaters>()
                        .Take(countTheaters)
                        .ToList()
                        .GroupBy(x => x.State)
                        .OrderBy(x =>x.Count())
                        .ToDictionary(x => x.Key, x => x.Count());

Запрос 2:

int TheaterCountByState = session.Query<Theaters>()
                            .Where(x => x.State== "NY")
                            .Count();

Ответы [ 2 ]

2 голосов
/ 12 января 2012

Мы не знаем вашу схему, поэтому трудно сказать.Но я почти уверен, что ваша проблема кроется здесь:

 .Take(countTheaters)

Это означает, что вы запускаете группировку только по первым countTheaters строкам, в то время как ваш другой пример запроса учитывает все строки в базе данных.*

1 голос
/ 17 января 2012

Причина в том, что .Take () возвращает только максимальное количество записей, которые были установлены в конфигурации сервера RavenDB. Это связано с тем, что воронс разрабатывает философию безопасной разработки, которая должна заставить вас рано потерпеть неудачу (в процессе разработки) и, таким образом, поможет вам избежать большой боли, которая может случиться, если вы не знаете о способах не подкачки страниц (то, что люди обычно используют с NHibernate или EF2).

Таким образом, по умолчанию, без указания чего-либо еще, вы получите только 128 записей. Вы можете изменить это на клиенте, но вы никогда не получите больше записей одновременно, чем число, установленное на сервере (я думаю, 1024, но в любом случае это не должно волновать - нет причины, по которой кто-то захочет изменить эти ограничения ).

...