我有一个非常简单的方法,它使用一些 LINQ 来访问我的数据库中的数据。
我有一些项目正在存储它们的创建日期。日期包括一个偏移量,因此它在数据库中存储为 datetimeoffset 类型。我正在尝试按日期过滤项目,为此我需要减去偏移时间来比较它们:
public async Task<IEnumerable<Item>> GetItems(DateTime? startDate)
{
var items = _dbContext.Items
.AsQueryable();
if (startDate != null)
{
items = items.Where(i =>
i.DateCreated.DateTime.AddHours(i.DateCreated.Offset.Hours) >= startDate.Value);
}
return await items
.ToListAsync();
}
但是当ToListAsync()被调用时,我得到这个错误:
因警告“Microsoft.EntityFrameworkCore.Query.QueryClientEvaluationWarning:LINQ 表达式‘where ([e].DateCreated.DateTime.AddHours(Convert([e].DateCreated.Offset.Hours, Double)) >= __startDate_Value_0)”而生成错误不被翻译,将在当地进行评估。'。通过将事件 ID“RelationalEventId.QueryClientEvaluationWarning”传递给“DbContext.OnConfiguring”或“AddDbContext”中的“ConfigureWarnings”方法,可以抑制或记录此异常。
问题似乎出在AddHours方法上,如果我把它去掉,它就可以正常工作。但我不知道是否有办法在不使用该方法的情况下使它工作。
我可以在这里使用不同的策略吗?
翻翻过去那场雪
慕侠2389804
相关分类