我有一個「消息」類:如何在投影爲匿名類型時查詢RavenDB靜態索引?
public class User { public string Name { get;set; } /*Other properties*/ }
public class Message {
public User From { get;set; }
public ICollection<User> To { get;set; }
public string Title { get;set; }
/* Others */
}
而且我喜歡定義的索引,以便:(是的,直出「我一直在下面的教程視頻」的)
public class Message_ToFromTitle : AbstractIndexCreationTask
{
public override IndexDefinition CreateIndexDefinition()
{
return new IndexDefinition
{
Map = "from m in docs.Messages select new { Query = new[] { m.Title, m.From.Name, m.To.Select(r => r.Name), } }",
Indexes = {{"Query", FieldIndexing.Analyzed}}
};
}
}
在Management Studio中,我可以很好地查詢Query:Chris
之類的東西,它會將Chris的所有Messages
帶到「To」,「From」或「Title」中,這非常棒。
我的問題是如何從.NET中查詢? 我已經試過:
session.Advanced.LuceneQuery<Message, Message_ToFromTitle>().Where("Query:Chris");
它的工作原理,但我想要做的是:
session.Query<Message, Message_ToFromTitle>().Where(m => m == "Chris");
但是,烏鴉(纔怪),不知道該怎麼辦'm',據推測我需要以某種方式查詢Query
。 Advanced
路線是唯一向我開放的路線嗎?我很樂意改變索引定義,我使用非通用的AbstractIndexCreationTask
,因爲我在末尾做了m.To.Select(r=>r.Name)
位,它不會在C#中編譯,而是按照我想要的方式在Raven中進行解釋,但是如果需要的話,會很樂意變成一個通用的!