2
我有一些存儲在RavenDb中的命令,它們都實現了ICommand。我希望能夠搜索上次修改的元數據和Raven-Entity-Name。我目前做多地圖上的每個命令如下:按實體名稱和上次修改日期搜索
public class CommandAuditSearch_Index : AbstractMultiMapIndexCreationTask<CommandAuditSearch_Index.Results>
{
public class Results
{
public string CommandType { get; set; }
public DateTime LastModified { get; set; }
}
public CommandAuditSearch_Index()
{
AddMap<NewEmployeeStartCommand>(employees => employees.Select(x => new
{
CommandType = MetadataFor(x).Value<string>("Raven-Entity-Name"),
LastModified = MetadataFor(x).Value<DateTime>("Last-Modified")
}));
AddMap<EmployeeLeaverCommand>(employees => employees.Select(x => new
{
CommandType = MetadataFor(x).Value<string>("Raven-Entity-Name"),
LastModified = MetadataFor(x).Value<DateTime>("Last-Modified")
}));
Index(results => results.CommandType, FieldIndexing.Analyzed);
}
}
我查詢這個如下:
session.Query<CommandAuditSearch_Index.Results, CommandAuditSearch_Index>()
.Where(x => x.CommandType == commandType && x.LastModified >= DateTime.Today).OfType<ICommand>().ToList();
我知道已經有內置烏鴉獲得標籤(實體名稱索引)和最後修改日期,但我似乎無法弄清楚如何獲得結果,因爲我的指數上面給了我。
任何人都可以指向一個靜態索引的正確方向,在這裏我不需要像上面那樣爲每個我必須查詢的命令提供多個映射,以ICommands列表的形式給出結果?
感謝
水稻
非常感謝這個馬特。這正是我正在尋找的。我總是找到你的答案詳細,並解釋清楚。 – Paddy 2013-03-13 14:27:48