我正在尝试拨打以下电话:
itemsCount = await _db.Disposals
.Include(d => d.ItemIds)
.Where(d => d.OrganizationId == SelectedOrganizationID &&
d.CreateDateTime.UtcDateTime > greaterThanUtc &&
d.CreateDateTime.UtcDateTime < lessThanUtc)
.SelectMany(d => d.ItemIds)
.CountAsync();
SQL CreateDateTime
字段是SQL中的datetimeoffset
类型。问题,我99%肯定,相当于这个:CreateDateTime.UtcDateTime
在SQL中不存在,因此它必须在后端而不是在数据库中完成。我可以将所有数据都带到后端,然后进行比较:
itemsCount = _db.Disposals
.Include(d => d.ItemIds)
.AsEnumerable()
但这显然是一个糟糕的解决方案,并且与异步相混淆。我有什么选择来异步获取计数?
答案 0 :(得分:0)
如果要强制将来自数据库的所有DateTime对象指定为UTC,则需要添加T4转换文件并为所有DateTime和可为空的DateTime对象添加其他逻辑,以便将它们初始化为DateTimeKind.Utc
1)为.edmx模型创建.tt文件
2)打开.tt文件,找到&#34; WritePrimitiveTypeProperty&#34;方法
3)替换现有的setter代码。这是ReportPropertyChanging和ReportPropertyChanged方法回调之间的所有内容。
以下是分步说明: