2016-09-01 2 views
1

저는 C# 프로젝트에서 RavenDB를 사용하기 시작했습니다.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. 불행히도 헤더에는 접두사 (헤더 및 $)가있는 키가 있으며 session.Query<Messages>() 문을 처리하는 방법을 모르겠습니다.

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

내가 루씬 쿼리를 만들려고하지만 그것은 작동하지 않습니다 :

나는 RavenDB Studio에서 그것을 할 수

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

당신은 내가 잘못는지 말해 나를 도울 수 부디?

답변

0

은 관리자가 만든 문서입니까? 귀하의 의사 소통은 닷넷 클래스 (또한 메시지)로 표현할 수 없으므로 (도트가있는 속성 이름을 사용할 수 없음), 이는 문서를로드 할 수 없다는 것을 의미합니다. 문서를 패치해야합니다 (점을 제거하려면)