2012-03-16 2 views
2

Я получаю URL запроса слишком долго проблемы и спрашивает, нет ли у кого-нибудь идеи о том, как я мог бы улучшить то, что у меня есть ...RavenDB Запрос URL Too Long

Здесь я возвращаю список недвижимости идентификаторами

var propertiesAlreadySentQuery = Session.Query<Domain.ClientProperty>().Where(x => x.ClientId == clientid); 
var propertiesAlreadySent = new int[propertiesAlreadySentQuery.Count()]; 
var t = 0; 
foreach (var i in propertiesAlreadySentQuery) 
{ 
    propertiesAlreadySent[t] = i.PropertyId; 
    t++; 
} 

Теперь, что я хочу сделать, это возвращает список свойств и отфильтровать те свойства, которые уже были отправлены (отсюда и именование!)

var results = from p in Session.Query<Domain.Property>() 
              where 
               (p.Development.Latitude >= minLat && p.Development.Latitude <= maxLat) && 
               (p.Development.Longitude >= minLong && p.Development.Longitude <= maxLong) 
              select p; 

var propertiesNotSent = results.Where(x => !x.PropertyId.In<Int32>(propertiesAlreadySent)); 

проблемы, количество собственности идентификаторов которые возвращаются в свойствахAlreadySent, могут быть довольно много, и я получаю URL-адрес запроса слишком долго.

Любые идеи, как я могу усовершенствовать это, чтобы не испытать эту проблему?

Благодаря

+0

Являются ли ваши результаты.Where() IQueryable или IEnumerable? –

+0

Привет, Боб, его IQueryable – Matt

+0

Хотел бы я помочь, но я использовал только Raven .NET API. В качестве обходного пути я предположил, что вы могли бы получить все, а затем фильтровать в памяти. Мне будет любопытно увидеть ответ здесь ... –

ответ

1

матовые, Вы ограничены в количестве предметов, которые вы можете использовать в качестве элемента(). Я не понимаю, что вы пытаетесь сделать, можете ли вы объяснить намерение вашего кода?

+0

Хорошо, позвольте мне попытаться объяснить - у меня есть список сведений о свойствах, которые уже были отправлены - я хочу исключить из новых сведений о свойствах, что люди еще не указали отправил. Проблема в том, что есть 3000+ документов, и хотя я фильтрую одно из полей, оно может возвращать много уже отправленных свойств. Имеет ли это смысл? Я думал о работе - просто проверяю сейчас, чтобы увидеть, работает ли это. – Matt

+0

Похоже, ограничение набора данных в другой коллекции сделало трюк. Огромный поклонник RavenDB и как способ, по сути, заставляет вас писать лучший код. Боль в задней части тоже, когда ваш босс на спине говорит: «Закончен еще» .... – Matt