我是 EF Core 的新手,尝试执行以下操作时遇到问题。我有一些根据价格过滤咖啡的业务逻辑:
if(request.MoreThen != null)
{
query = query.Where(c =>
c.Prices
.OrderByDescending(p => p.CreatedAt)
.First()
.Price
>= request.MoreThen);
}
它工作得很好。但是,当我尝试将此功能提取到私有方法中时,我发现该Prices关系为空。
现在,我有几个地方需要参考最新价格,这是第二个如果:
if(request.MoreThen != null)
{
query = query.Where(c =>
c.Prices
.OrderByDescending(p => p.CreatedAt)
.First()
.Price
>= request.MoreThen);
}
我发现这根本不是 DRY,所以我想将价格提取提取到私有方法中,如下所示:
private decimal GetPrice(Coffee model)
{
return model.Prices
.OrderByDescending(p => p.CreatedAt)
.First()
.Price
}
但是,现在当我替换查询时:
query = query.Where(c => GetPrice(c) <= request.LessThen)
我收到一个奇怪的错误,在调试器中,除包含的字段外,每个字段都存在。(请注意,我调用了) 方法。.Include
完整的代码示例包含在我在 Github 上的开源项目中
编辑:我使用 Postgres 作为数据库引擎,代码优先方法
.Prices所以我的问题是,即使我在方法的开头包含了它们,为什么还是null?
米琪卡哇伊
相关分类