2016-09-01 5 views
1

Я начал использовать RavenDB с проектом C#. У меня есть документы со структурой:Обработка префикса с точкой в ​​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" 
} 

я могу получить документ, MESSAGEID:

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

Но я хочу, чтобы получить документ по: Headers.Header.MessageId. К сожалению, в заголовках есть ключи с префиксом (Header и $), и я не знаю, как обращаться с ним в инструкции session.Query<Messages>().

я могу сделать это в RavenDB студии:

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"] 
} 

Я попытался создать Lucene запрос, но он не работает:

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

Можете ли вы сказать мне, что я делаю неправильно и помочь мне пожалуйста?

ответ

0

Ваши документы созданы с помощью управления? потому что ваш документ не может быть представлен в классе .net (также посредством сообщений) (вы не можете иметь имя свойства с точкой), это означает, что вы не можете загрузить документ; вам необходимо исправить документы (чтобы удалить точку)

 Смежные вопросы

  • Нет связанных вопросов^_^