我有一张发票表。我的服务层知道如何计算一张发票Total
的发票,但如果我想按 过滤一组发票Total
,LINQ 查询将失败,因为“SQL 中不支持翻译”。发生这种情况是因为无法对每个发票记录执行嵌套查询。解决它的正确方法是什么?
每张发票都是通过对涉及折扣Total
的表中计算的行总计求和来确定的,字面意思是:InvoiceLines
public decimal Total
{
get
{
return Lines.Sum(l => l.LineTotal); // Lines provided by repository
}
}
我不想在我的数据库中复制已经在我的服务层中的业务逻辑,这涉及对影响发票总额的行项目进行折扣。Total
但是除了将发票缓存在可以直接过滤的数据库列中之外,我没有看到任何其他方法。
发票是不可变的,因此不会导致任何数据完整性问题,但我讨厌重复数据。我可以使用视图来显示发票总额,但是我的存储库正在执行服务层功能。