为什么 Fluent Hibernate .Sum 在空 table 处使用时会抛出 InvalidOperationException?

Why does fluent Hibernate .Sum throws InvalidOperationException when used at an empty table?

我在 C# 中使用流畅的 Hibernate 来查询 sqlite 数据库。

所以当我的数据库中至少有一个 CashTransaction 时,这段代码工作正常。

public decimal? GetSum(ISession dbSession)
{
    var transactions = dbSession.Query<CashTransaction>();
    Debug.WriteLine(transactions.Count().ToString());
    return transactions.Sum(s => s.Value);
}

但如果 CashTransaction table 为空,最后一行将抛出 InvalidOperationException。这是为什么?

我可以将代码更改为:

public decimal? GetSum(ISession dbSession)
{
    var transactions = dbSession.Query<CashTransaction>();
    if (transactions.Count() > 0)
    {
        return transactions.Sum(s => s.Value);
    }
    else
    {
        return 0;
    }
}

但这似乎不太优雅。

好的,这里的代码似乎也适用于空的 CashTransaction table:

    public decimal? GetSum(ISession dbSession)
    {
        var transactions = dbSession.Query<CashTransaction>();
        return transactions.Sum(s => (decimal?)s.Value);
    }

这种行为的原因似乎是 SQL 和 linq 的差异,决定优先使用 linq 方式。至少这里是这样解释的 https://social.msdn.microsoft.com/Forums/office/en-US/479f2823-c942-4990-adca-21e03f969a12/sum-on-empty-table-throws-invalidoperationexception