DocumentDB LINQ查询无法正确转换枚举

时间:2018-09-28 14:27:01

标签: linq azure-cosmosdb

根据thisthis,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转换器吗?

1 个答案:

答案 0 :(得分:1)

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后版本。