Suche nach Entitätsname und Datum der letzten Änderung

Ich habe eine Reihe von Befehlen in RavenDb gespeichert und sie alle implementieren ICommand. Ich möchte in der Lage sein, nach den Metadaten des zuletzt geänderten und des Raven-Entity-Namens zu suchen. Momentan führe ich für jeden Befehl eine Multi-Map wie folgt aus:

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);
        }
    }

Ich frage das wie folgt ab:

session.Query<CommandAuditSearch_Index.Results, CommandAuditSearch_Index>()
                              .Where(x => x.CommandType == commandType && x.LastModified >= DateTime.Today).OfType<ICommand>().ToList();

Ich weiß, dass es in Raven bereits einen Index gibt, der das Tag (den Entitätsnamen) und das Datum der letzten Änderung enthält, aber ich kann nicht herausfinden, wie ich die Ergebnisse erhalte, wie mein Index oben zeigt.

Kann jemand mich in die richtige Richtung eines statischen Indexes weisen, bei dem ich nicht für jeden Befehl, den ich abfragen muss, die oben genannten Mehrfachzuordnungen benötigen, um die Ergebnisse als Liste von ICommands zu erhalten?

Vielen Dank

Paddy

Antworten auf die Frage(1)

Ihre Antwort auf die Frage