2013-06-13 2 views
2

[JsonProperty]으로 RavenDB에서 질의하는 데 문제가 있습니다.내부 속성에 대한 RavenDB 쿼리가 [JsonProperty]로 직렬화 됨

다음 테스트는 작동하지 않습니다.

(참고 : 내가 사용은 새 네임 스페이스 Raven.Imports.Newtonsoft.Json를 사용 있는지 알고) : 나는 줄 [JsonProperty("N")]을 주석 경우 예상대로

using System.Linq; 
using NUnit.Framework; 
using Raven.Client.Embedded; 
using Raven.Imports.Newtonsoft.Json; 

namespace RavenTest 
{ 
    [TestFixture] 
    public class RavenFixture 
    { 
     protected EmbeddableDocumentStore DocumentStore; 

     [SetUp] 
     public void BaseSetUp() 
     { 
      DocumentStore = new EmbeddableDocumentStore { RunInMemory = true }; 
      DocumentStore.Initialize(); 
     } 

     [Test] 
     public void Test() 
     { 
      using (var session = DocumentStore.OpenSession()) 
      { 
       session.Store(new Parent {Inner = new Child {Num = 1}}); 
       session.SaveChanges(); 
      } 

      using (var session = DocumentStore.OpenSession()) 
      { 
       var list = session.Query<Parent>().Customize(x => x.WaitForNonStaleResultsAsOfNow()) 
         .Where(x => x.Inner.Num == 1) 
         .ToList(); 

       Assert.That(list.Count, Is.EqualTo(1)); 
      } 
     } 

     public class Parent 
     { 
      public string Id { get; set; } 

      //If you comment this out, it will work 
      [JsonProperty("N")] 
      public Child Inner { get; set; } 
     } 

     public class Child 
     { 
      [JsonProperty("M")] 
      public int Num { get; set; } 
     } 
    } 
}  

그러나, 그것은 작동합니다.

이 버그입니까? 아니면 내가 잘못하고 있습니까?

내가 RavenDB 2.5.0.0을 사용하고 (최신)

이는 Newtonsoft 문서에 속성을 존중하지 않을 것이다 DocumentSession.Query <>에 대한 쿼리 업체에서 버그가 수 있도록 나타납니다

답변

1

.

당신이 예상대로 수행 할 루씬 쿼리 공급자 사용하지만 경우 :

[Test] 
    public void Test() 
    { 
     using (var session = DocumentStore.OpenSession()) 
     { 
      session.Store(new Parent {Inner = new Child {Num = 1}}); 
      session.SaveChanges(); 
     } 

     using (var session = DocumentStore.OpenSession()) 
     { 
      var list = session.Advanced.LuceneQuery<Parent>() 
        .WhereEquals(x => x.Inner.Num, 1) 
        .ToList(); 

      Assert.That(list.Count, Is.EqualTo(1)); 
     } 
    } 
+0

감사합니다 제이, 불행하게도 나를 위해 작동하지 않았다. 어떤 RavenDB 버전을 사용하고 있습니까? 이상하게도 LuceneQuery를 사용하면 같은 동작이 발생합니다. '[JsonProperty ("N")]'을 주석 처리하면 작동합니다. –

+0

빌드 2375에서 테스트했습니다. – Jay

+0

빌드 2622 및 2601에서 테스트했는데 작동하지 않습니다. 나는 이것이 버그라고 확신하며 장차 픽스를 기대하고있다. –

관련 문제