我在RavenDB文檔看起來的樣子:RavenDB創建索引錯誤
{
"ItemId": 1,
"Title": "Villa
}
用下面的元數據:
Raven-Clr-Type: MyNamespace.Item, MyNamespace
Raven-Entity-Name: Doelkaarten
所以我用一個類型MyNamespace.Item序列,但給它我自己的Raven-Entity-Name,所以它有自己的收藏。
在我的代碼定義索引:
public class DoelkaartenIndex : AbstractIndexCreationTask<Item>
{
public DoelkaartenIndex()
{
// MetadataFor(doc)["Raven-Entity-Name"].ToString() == "Doelkaarten"
Map = items => from item in items
where MetadataFor(item)["Raven-Entity-Name"].ToString() == "Doelkaarten"
select new {Id = item.ItemId, Name = item.Title};
}
}
在它的「地圖」字段轉換索引:
docs.Items
.Where(item => item["@metadata"]["Raven-Entity-Name"].ToString() == "Doelkaarten")
.Select(item => new {Id = item.ItemId, Name = item.Title})
對索引的查詢從來沒有給結果。
如果地圖領域的手動更改爲它下面的工作代碼...
from doc in docs
where doc["@metadata"]["Raven-Entity-Name"] == "Doelkaarten"
select new { Id = doc.ItemId, Name=doc.Title };
怎麼可能在代碼中定義給出需要的結果的指數?
RavenDB使用:RavenHQ,構建#961
UPDATE:
我在做什麼是這樣的:我想使用SharePoint作爲CMS,並使用RavenDB作爲一個現成的只複製SharePoint列表數據。我創建了一個工具來從SharePoint列表同步到RavenDB。我有一個通用類型的項目,我從SharePoint列表項創建,並且我序列化到RavenDB。所以我所有的文檔都是Item類型的。但是他們來自不同屬性的列表,所以我希望能夠區分。你建議區分一個額外的財產,這將是完美的工作。但是接下來我會在一個大的Items集合中看到所有列表中的所有列表項目......您認爲這是解決此問題的最佳方法嗎?或者只是和它一起生活?我想使用索引來創建項目中所有數據的投影到我需要的實際數據。
嗨馬特,謝謝你的回答。我有太長的評論來進一步解釋我的問題。現在作爲問題的更新。任何想法的最佳途徑? –
查看文檔中查詢多態實體的頁面。它應該回答你的問題。 http://ravendb.net/docs/client-api/querying/polymorphism –
我決定製作Item的所有項目,並且不要混淆Raven-Entity-Name。多態性不適合我,沒有繼承...感謝您的時間! –