linq - DocumentDB LINQ 查询未正确转换枚举
问题描述
根据this和this,DocumentDb LINQ 提供程序应该在生成使用枚举的查询时使用自定义 JsonConverters(早在 1.10.0 版)。但我们没有看到这种行为。
我的项目正在引用 Microsoft.Azure.DocumentDb 1.13.1,我们仍然看到一个 LINQ 查询将枚举转换为其数值。像这样的Where()
谓词
request => request.Source == sourceId && request.State == state
生成这样的查询
{SELECT * FROM root WHERE ((root["Source"] = "5c196602-1a60-406a-81cd-1be5ac23eb18") AND (root["State"] = 0))) }
State
是一个枚举,并根据我们在 docdb 客户端对象上的序列化程序设置正确序列化/存储在数据库中作为其字符串值。这不是将对象序列化/反序列化到文档/从文档中的问题 - 可以按预期工作。
我们可能做错了什么?是否在某处记录了如何启用/利用此功能?我们是否必须向 LINQ 提供程序或其他东西注册 JSON 转换器?
解决方案
1.13.1 是一个有查询序列化问题的版本,所以它是 SDK 的一个错误。
如您在此处看到的,在 1.19.1 之后修复的那些问题:https ://docs.microsoft.com/en-us/azure/cosmos-db/sql-api-sdk-dotnet#a-name11911191
- 修复了自定义 JsonSerializer 设置未针对某些查询和存储过程执行的错误
您必须升级到 SDK 的 1.19.1 后版本。
推荐阅读
- regex - 红宝石正则表达式。限制最小和最大字符串长度
- firebase - Firestore Stream 已关闭,状态为 UNAVAILABLE
- android - Android - 为 expresso 测试引用多个模块变体
- html - 固定宽度的 CSS 水平菜单将附加项目推入下拉菜单
- google-cloud-platform - 在 Google Cloud 中创建 Anthos 的 Terraform 代码
- android - 在 Android 上迁移到 gradle kotlin dls 时出现 protobuf 问题
- python - 为什么当我将 df 与附加列分组时,聚合不起作用?
- elasticsearch - ElastAlert 频率规则没有得到任何命中/查找
- ios - 将自定义调试头文件导入 lldb
- c# - 如何使用 DataTrigger 更改 ItemsControl 中的 ItemsPanel?