У меня есть «сообщение» класс:Как запросить статический индекс 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
, и он принесет все 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, но будет и с радостью изменится на общий, если понадобится!