Поиск по имени организации и дате последнего изменения
У меня есть несколько команд, хранящихся в 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();
Я знаю, что в Raven уже встроен индекс для получения тега (имени сущности) и даты последнего изменения, но я не могу понять, как получить результаты, как показывает мой индекс выше.
Кто-нибудь может указать мне правильное направление статического индекса, где мне не нужно иметь мультикарты, как указано выше, для каждой команды, которую я должен запросить, которая дает мне результаты в виде списка ICommands?
Спасибо
Пэдди