gpt4 book ai didi

linq - RavenDB EmbeddableDocumentStore 中可能存在的错误

转载 作者:行者123 更新时间:2023-12-05 01:18:26 25 4
gpt4 key购买 nike

我们正在升级到 RavenDB 2.5 并且遇到了一个奇怪的情况。
我们的一个单元测试突然失败,原因不明。

下面是一些简单的代码来重现这个问题:

class Foo
{
public Guid Id { get; private set; }
public DateTime? ExpirationTime { get; set; }

public Foo()
{
Id = Guid.NewGuid();
ExpirationTime = null;
}
}

var documentStore = new EmbeddableDocumentStore
{
RunInMemory = true,
Conventions = { DefaultQueryingConsistency = ConsistencyOptions.QueryYourWrites }
};
documentStore.Initialize();

using (var session = documentStore.OpenSession())
{
session.Store(new Foo());
session.Store(new Foo());
session.SaveChanges();
}

所以,现在我们在数据库中有两个文档,都带有 ExpirationTime = null。
这是在查询这些文档的数据库时发生的情况:
using (var session = documentStore.OpenSession())
{
var bar = session.Query<Foo>().Where(foo => foo.ExpirationTime == null).ToList();
Console.WriteLine("1. Number of documents: {0}", bar.Count);

bar = session.Query<Foo>().Where(foo => foo.ExpirationTime == null ||
foo.ExpirationTime > DateTime.Now).ToList();
Console.WriteLine("2. Number of documents: {0}", bar.Count);

bar = session.Query<Foo>().Where(foo => foo.ExpirationTime == null |
foo.ExpirationTime > DateTime.Now).ToList();
Console.WriteLine("3. Number of documents: {0}", bar.Count);
}

这些查询的输出如下:
1. Number of documents: 2
2. Number of documents: 0
3. Number of documents: 2

这对我来说似乎不正确......我也希望数字 2. 给出 2。

我对 RavenDB 服务器运行了相同的查询,并得到了预期的结果,所以这似乎是 EmbeddableDocumentStore 的问题。

在对此进行测试时,我还发现在其他情况下使用逻辑或运算符时出现了一些奇怪的行为。有时使用 foo.HasValue将给出与 foo != null 不同的结果,但这可能与同一问题有关。

还有其他人遇到过这个问题吗?已知错误?

最佳答案

这是 RavenDB 中与空字段排序相关的错误。
在下一个版本中修复

关于linq - RavenDB EmbeddableDocumentStore 中可能存在的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18016153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com