2012-03-16 109 views
2

我收到請求URL過長的問題,並想知道如果任何人對我怎麼能提高我有什麼想法?RavenDB請求URL太長

在這裏,我返回列表屬性的id

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)); 

問題是,物業編號的數量在propertiesAlreadySent中返回的內容非常多,而且我的請求URL太長。

任何想法如何改進這個不會遇到這個問題?

感謝

+0

是你的results.Where()IQueryable或IEnumerable? – 2012-03-17 11:48:37

+0

嗨,鮑勃,其IQueryable – Matt 2012-03-17 13:14:37

+0

我希望我可以幫忙,但我只使用Raven .NET API。作爲解決方法,我想你可以檢索所有內容,然後在內存中過濾。我會好奇的在這裏看到答案...... – 2012-03-17 15:04:51

回答

1

馬特, 你在,你可以在在()元素使用的項目數的限制。 我不明白你想要做什麼,你能解釋你的代碼背後的意圖嗎?

+0

好吧,讓我試着解釋一下 - 我有一份已經發送的財產細節清單 - 我想排除那些人們還沒有的新財產細節已發送。問題是,有超過3000個文檔,雖然我通過其中一個字段進行篩選,但它可以返回已發送的大量屬性。那有意義嗎?我想到了一個解決方法 - 現在只是測試,看看它是否工作.. – Matt 2012-03-18 22:19:30

+0

看起來像限制在另一個集合上的數據集已經做到了。 RavenDB的巨大風扇,就像它本質上使你寫出更好的代碼的方式一樣。當你的老闆在你的背上說「它還沒完成」時,背部也會感到痛苦.... – Matt 2012-03-18 22:36:01