C# 使用[JsonProperty]序列化内部属性的RavenDB查询
我在使用C# 使用[JsonProperty]序列化内部属性的RavenDB查询,c#,ravendb,C#,Ravendb,我在使用[JsonProperty]从RavenDB查询时遇到问题 以下测试不起作用 (注意:我知道我使用了新的名称空间Raven.Imports.Newtonsoft.Json): 使用System.Linq; 使用NUnit.Framework; 使用Raven.Client.Embedded; 使用Raven.Imports.Newtonsoft.Json; 命名空间RavenTest { [测试夹具] 公共类RavenFixture { 受保护的嵌入式文档库文档库; [设置] publi
[JsonProperty]
从RavenDB查询时遇到问题
以下测试不起作用
(注意:我知道我使用了新的名称空间Raven.Imports.Newtonsoft.Json
):
使用System.Linq;
使用NUnit.Framework;
使用Raven.Client.Embedded;
使用Raven.Imports.Newtonsoft.Json;
命名空间RavenTest
{
[测试夹具]
公共类RavenFixture
{
受保护的嵌入式文档库文档库;
[设置]
public void BaseSetUp()
{
DocumentStore=newEmbeddedBleDocumentStore{RunInMemory=true};
初始化();
}
[测试]
公开无效测试()
{
使用(var session=DocumentStore.OpenSession())
{
存储(新父{Inner=new Child{Num=1});
session.SaveChanges();
}
使用(var session=DocumentStore.OpenSession())
{
var list=session.Query().Customize(x=>x.WaitForNonSalesultsAsOffow())
.其中(x=>x.Inner.Num==1)
.ToList();
Assert.That(list.Count,Is.EqualTo(1));
}
}
公共类父类
{
公共字符串Id{get;set;}
//如果你把这个评论出来,它会起作用的
[JsonProperty(“N”)]
公共子内部{get;set;}
}
公营儿童
{
[JsonProperty(“M”)]
公共int Num{get;set;}
}
}
}
但是,如果我注释掉行[JsonProperty(“N”)]
,它将按预期工作
这是一个错误还是我做错了什么
我使用的是RavenDB 2.5.0.0(最新版本)这似乎是DocumentSession查询提供程序中的一个错误。如果查询提供程序不支持文档上的Newtonsoft属性,则进行查询 但是,如果使用Lucene查询提供程序,它将按预期执行:
[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));
}
}
[测试]
公开无效测试()
{
使用(var session=DocumentStore.OpenSession())
{
存储(新父{Inner=new Child{Num=1});
session.SaveChanges();
}
使用(var session=DocumentStore.OpenSession())
{
var list=session.Advanced.LuceneQuery()
.WhereEquals(x=>x.Inner.Num,1)
.ToList();
Assert.That(list.Count,Is.EqualTo(1));
}
}
谢谢Jay,不幸的是这对我不起作用。您使用的是哪个版本的RavenDB?奇怪的是,使用LuceneQuery会导致相同的行为。如果我注释掉[JsonProperty(“N”)]
,它就会工作。我在构建2375上测试了它。我在构建2622和2601上测试了它,但它不工作。我很确定这是一个bug,并期待着在将来得到修复。
[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));
}
}