2016-09-01 2 views
1

Ich habe begonnen, RavenDB mit C# -Projekt zu verwenden. Ich habe Dokumente mit Struktur:Umgang mit Präfix mit Punkt in RavenDB

{ 
    "MessageId": "8c34dec8-e6fe-6bee-2dc6-2cf83e374090", 
    "Headers": { 
    "Header.MessageId": "14f6cdf3-142d-4ab0-9610-a65600f1f460", 
    "Header.Timestamp": "2016-08-02 12:40:55:783130 Z", 
    "$.diagnostics.host": "1ddc6cefd4d776f1de8fefc33a45d020", 
    }, 
    "Timestamp": "2016-08-02T12:43:25.3914940Z" 
} 

I Dokument von Meldungs ​​bekommen kann:

var doc = session.Query<Messages>().Where(w => w.MessageId == "8c34dec8-e6fe-6bee-2dc6-2cf83e374090").ToList(); 

Aber ich will Dokument erhalten, indem: Headers.Header.MessageId. Leider in Header gibt es Schlüssel mit Präfix (Header und $) und ich weiß nicht, wie man es in session.Query<Messages>() Anweisung behandelt.

Ich kann es in RavenDB Studio tun:

from doc in docs.Messages 
where doc.Headers["Header.MessageId"] == "14f6cdf3-142d-4ab0-9610-a65600f1f460" 
select new { 
    Id = doc.MessageId, 
    MessageId = doc.Headers["Header.MessageId"] 
} 

Ich versuchte Lucene Abfrage zu erstellen, aber es funktioniert nicht:

var doc = session.Advanced.LuceneQuery<object>().WhereEquals("Headers.Header.MessageId", "14f6cdf3-142d-4ab0-9610-a65600f1f460").ToList(); 

Können Sie mir sagen, was ich falsch mache und mir helfen Bitte?

Antwort

0

sind Ihre Dokumente mit der Verwaltung erstellt? Da Ihr Dokument nicht in einer .net-Klasse (auch durch Nachrichten) dargestellt werden kann (Sie können keinen Eigenschaftsnamen mit Punkt haben), bedeutet dies, dass Sie das Dokument nicht laden können; Sie müssen die Dokumente patchen (um den Punkt zu entfernen)