假设您有一个数据库表,以便
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;
谢谢。