文档数据库 LINQ 查询未正确转换枚举



根据这个和这个,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://learn.microsoft.com/en-us/azure/cosmos-db/sql-api-sdk-dotnet#a-name11911191

  • 修复了某些查询和存储过程执行不支持自定义 JsonSerializer 设置的 bug

您必须升级到 1.19.1 版的 SDK 版本。

最新更新