0
假設你有一個數據庫表,使得實體框架的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);
上面的查詢將NOT工作。原因在於DateTime.Now當然會給出小時,分鐘和秒鐘。但是,而不是從sql或類似的錯誤提供的結果只返回0行。
爲了解決和檢索預期數據:
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?
和財產懸停提示也DateTime? myTable.eventTime...
從而導致我必須去發現每一個日期屬性我反對比較,以確保我一個轉換是正確的。
在這種情況下,不應該採取DateTime
對象並在構造查詢之前將其轉換爲正確的格式,並在實際執行查詢之前拋出異常?
有沒有人有這種類型的問題,一個熟悉和你有什麼話在過去所做的與它合作?
如果'DateTime.Now.AddDays(-5)'達2016年12月22日17:48:15Z,你的第一個查詢產生或在此時刻之後,沒有錯,這一切事件。 DateTime值沒有格式。 –