实体框架DateTime比较查询 - 可能的错误



假设您有一个数据库表,以便

public partial class myTable
{
    [Key]
    public Guid rowID { get; set; }
    [Column(TypeName = "datetime2")]
    public DateTime? eventTime { get; set; }
}

现在假设您正在寻找5天或更少几天发生的数据:

DateTime dTVal = DateTime.Now.AddDays(-5);
var event = db.myTable.Where(evt => evt.eventTime >= dTVal);

上述查询将不工作。原因是DateTime。现在当然要提供小时,分钟和秒。但是,而不是从SQL或类似结果中给出错误的结果。

为了解决和检索预期数据:

var dtVal = DateTime.Now.AddDays(-5).Date; // This wouldn't work in the LINQ to Entities query because AddDays() method...
var events = db.myTable.Where(evt => evt.eventTime >= dtVal);

也许我对EF的相对新颖性应该受到责备,但这似乎非常直觉且有些痛苦,因为IntelliSense不会将其拾取,因为除了DateTime?外,属性的Hover Tooltip都不是DateTime? myTable.eventTime...,从而使我引起了我的影响。必须去查找我要比较的每个日期属性,以确保我正确的转换。

在这种情况下,不应该在构造查询之前将 DateTime对象转换为正确的格式,并在实际执行查询之前进行例外吗?

有人熟悉这种类型的问题吗?您过去做了什么?

类似回答问题

解决方法是将 DateTime.Date用于date2类型实体。

var compareDate = DateTime.Now.AddDays(-5).Date;

谢谢。

最新更新