根据this和this,DocumentDb LINQ提供程序在生成使用枚举的查询(早于1.10.0版本)时应该使用自定义JsonConverters。但是我们没有看到这种行为。
我的项目引用的是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转换器吗?
答案 0 :(得分:1)
1.13.1是具有查询序列化问题的版本,因此它是SDK的错误。
这些问题已在1.19.1之后修复,您可以在此处看到:https://docs.microsoft.com/en-us/azure/cosmos-db/sql-api-sdk-dotnet#a-name11911191
您将必须升级到SDK的1.19.1后版本。