C# Representation=BsonType.Int64不能与Datetime一起正常工作

C# Representation=BsonType.Int64不能与Datetime一起正常工作,c#,mongodb,mongodb-.net-driver,bson,C#,Mongodb,Mongodb .net Driver,Bson,我正在用Representation=BsonType.Int64属性装饰类中的一个DateTime属性,以便它以日期的Int64表示形式存储在数据库中 当我以前将该属性存储为普通的C#Datetime,并且没有将该值设置为任何值时,它将在数据库中存储Datetime.Min。这非常完美,因为我正在从数据库中读取数据并执行Query.LT操作,如下所示: Query.LT("MyField", DateTime.Now)); 它用来返回所有的值 现在,我开始将其存储为BsonType.Int6

我正在用Representation=BsonType.Int64属性装饰类中的一个DateTime属性,以便它以日期的Int64表示形式存储在数据库中

当我以前将该属性存储为普通的C#Datetime,并且没有将该值设置为任何值时,它将在数据库中存储Datetime.Min。这非常完美,因为我正在从数据库中读取数据并执行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#driver 1.4.2.4500进行测试)

问题是,在查询过程中,MongoDB驱动程序不知道您选择了另一种表示形式

因此,您需要显式查询
Int64

Query.LT("MyField", DateTime.Now.Ticks));

这将按预期工作(使用MongoDB 2.1.1、C#driver 1.4.2.4500进行测试)

是。这就是现在必须做的事情。当您使用查询生成器时,我们不知道您正在为放置该属性的类构造查询。在下一个版本中,我们将使用类型构建器来解决这个问题。我想这在linq环境下看起来很自然。键入的构建器将是什么样子?类似于
Query.LT(…)
?Query.Build(q=>q.LT(…)。但是,因为简单使用linq更自然,所以也支持:Query.Where(t=>t.DateTime<…);是的。现在必须这样做。当您使用查询生成器时,我们不知道您正在为添加该属性的类构造查询。在下一个版本中,我们将使用类型化生成器来解决此问题。有趣的是,我想这在linq上下文中看起来很自然。类型化生成器看起来会是什么样子like?like
Query.LT(…)
?Query.Build(q=>q.LT(…)。但是,因为简单使用linq更自然,所以也支持它:Query.Where(t=>t.DateTime<…);