2011-04-06 55 views
9

進出口使用RavenDB(在服務器模式下運行@localhost:3000),和ASP.NET MVC3RavenDB:一個簡單的查詢<T>().ToList()返回0結果

我有這樣的代碼段,其從停止工作建立289.它確實工作過幾次,不知道它是否是更新到322或我做了什麼。

Session.Query<Post>().ToList().ForEach(Session.Delete); 

它刪除所有帖子的時候我嘗試了一段時間後,(我只在我的樣本數據大約50多個職位,以及500多進來),只有我能看到的變化是這兩個發生在當代碼段(使用Session.delete)以上實際運行

Executing query '' on index 'dynamic/Posts' in 'http://localhost:3000' 
Query returned 0/0 results 

而且在烏鴉日誌(文本文件)也運行

A first chance exception of type 'System.Net.WebException' occurred in System.dll 
A first chance exception of type 'System.Net.WebException' occurred in Raven.Client.Lightweight.dll 

而且該日誌出現在Visual Studio的輸出窗口沒有任何不幸

Request # 7: GET  - 46 ms - ZaszStore - 200 - /indexes/dynamic/Posts?query=&start=0&pageSize=128&aggregation=None 

此查詢運行得很好:

Session.Load<Post>("MyPostId") 

,並獲取正確的日誌實例。

爲什麼簡單的Session.Query()。ToList()一直返回0結果?而Session.Query()。Count()總是返回0。考慮到Raven DB的SilverLight-UI(SL-UI)清楚地顯示數據庫中有50多個帖子,什麼會導致這種行爲?

正確填寫「Raven-Entity-Name」。

+1

你可以嘗試創建一個明確的索引並查詢它嗎? – 2011-04-07 05:17:47

+1

我只是試過,查詢對索引作品!但我不想繼續創建各種索引,只是爲了獲取數據庫中特定實體的所有文檔。 – Zasz 2011-04-07 11:24:52

+0

在統計標籤中是否有索引錯誤?另外嘗試刪除動態索引並讓它從頭開始重新開始。 – 2011-04-07 12:13:58

回答

1

對於這種查詢可以得到像這樣所有的文檔:

documentStore.DatabaseCommands.StartsWith("post", <page>, <size>) 

這應該是比發出一個查詢返回的所有文檔,因爲它直接拉他們從數據存儲更方便,更快捷,繞過Lucene索引。

但是,它只適用於當你想獲得所有的保存前綴作爲他們的Id的文檔。

+1

我可以像所說的那樣獲取數據庫中的所有文檔,或者我可以使用LuceneQuery功能獲取它,或者我可以使用HTTP接口並使用lucene查詢再次創建Web請求以獲取它。但我想知道爲什麼在這個世界上,Linq提供者不工作:(這是raven db的亮點 – Zasz 2011-08-03 05:41:53