【发布时间】:2021-07-17 03:58:43
【问题描述】:
我有一个TimeRecords 的 SQLite 数据库。创建新记录时,不会提供EndTime。
我想检索未提供EndTime 的第一条记录并将其分配给新的TimeRecord
EndTime 存储为 DateTime 变量。
我当前的查询
public static Models.TimeRecord GetMerchandiserCurrentTimeRecord(Models.Merchandiser merchandiser)
{
lock (collisionLock)
{
return database.Table<Models.TimeRecord>().FirstOrDefault(timeRecord => timeRecord.MerchandiserId == merchandiser.Id && timeRecord.EndTime == null);
}
}
调用查询
Models.TimeRecord CurrentTimeRecord { get; set; }
// I assign the CurrenTimeRecord in the Constructor
CurrentTimeRecord = Database.TimeRecordDatabase.GetMerchandiserCurrentTimeRecord(SelectedMerchandiser);
我做了一些research 并发现DateTime 不存储Null 值,而是默认为0001 年1 月1 日00:00:00.000。
因此,我可以理解为什么上面的查询没有返回任何结果,所以我将查询更改为下面的,但仍然没有检索到任何结果。
return database.Table<Models.TimeRecord>().FirstOrDefault(timeRecord => timeRecord.MerchandiserId == merchandiser.Id && timeRecord.EndTime == '01/01/0001');
【问题讨论】:
-
你忘了给我们上课
TimeRecord。如果您已将属性Endtime定义为可为空的DateTime?,并将相应的表列定义为可为空,则将空的日期时间保存为空。不是 0001 年 1 月 1 日。
标签: c# sql sqlite linq datetime