表示 = BsonType.Int64 不能在 Datetime 中正常工作
本文关键字:常工作 工作 Datetime BsonType Int64 不能 表示 | 更新日期: 2023-09-27 18:36:28
我正在使用 Representation= BsonType.Int64 属性装饰类中的一个 DateTime 属性,以便它存储在数据库中,其中包含日期的 Int64 表示形式。
当我过去将该属性存储为普通的 C# Datetime 并且未将值设置为任何值时,它会将 DateTime.Min 存储在数据库中。这是完美的,因为我正在从 databse 中读取并执行以下操作 Query.LT 如下所示:
Query.LT("MyField", DateTime.Now));
它曾经很好地返回所有值。
现在我开始将其存储为 BsonType.Int64,而BsonType.Int64 中的 DateTime.Min 等效项是"0"。 my Query.LT("MyField", DateTime.Now));使用 DateTime.min 存储的所有日期失败。
关于如何解决这个问题的任何想法?
问题是,在查询期间,MongoDB 驱动程序不知道您选择了备用表示形式。
因此,您需要显式查询Int64
:
Query.LT("MyField", DateTime.Now.Ticks));
这将按预期工作(使用 MongoDB 2.1.1、C# 驱动程序 1.4.2.4500 进行测试)