根据此 Jira 票证,MongoDB C# 驱动程序支持对 Nullable(Of T) 的查询: https ://jira.mongodb.org/browse/CSHARP-483
但是,我在让它工作时遇到问题。
mycol.AsQueryable.Where(Function(p) p.MyNullableInteger = 3)
按照指示,我.Value
从查询中删除了该属性,但是这破坏了严格的类型,所以我不得不删除我的Option Strict On
子句。然后它编译成功,但理想情况下我希望该子句重新加入。
PredicateTranslator 抛出异常如下:
不支持的 where 子句:(Boolean)(p.MyNullableInteger == (Nullable)3)
.NET 生成的实际 Where 子句表达式是:
p => Convert((p.MyNullableInteger == ConvertChecked(3)))
我正在使用驱动程序 1.5。我的 POCO 类确实注册了一个类映射,但映射在这里没有引用该属性(它只是为我的 Id 属性设置从 String 到 ObjectId 的表示形式)。