gpt4 book ai didi

c# - 在 RavenDB 中处理带点的前缀

转载 作者:太空宇宙 更新时间:2023-11-03 15:15:13 24 4
gpt4 key购买 nike

我已经开始在 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 .不幸的是,在 Headers 中有带前缀的键(Header 和 $),我不知道如何在 session.Query<Messages>() 中处理它声明。

我可以在 RavenDB Studio 中完成:

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();

你能告诉我我做错了什么并帮助我吗?

最佳答案

您的文档是由管理层创建的吗?因为您的文档不能在 .net 类中表示(也由 Messages 表示)(您不能使用带点的属性名称),这意味着您无法加载文档;你需要修补文档(删除点)

关于c# - 在 RavenDB 中处理带点的前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39268845/

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