NHibernate 公式使用了错误的前缀

NHibernate Formula Uses Wrong Prefix

我有以下型号:

public class Transaction {
    public virtual decimal Amount { get; set; }
    public virtual decimal Tax { get; set; }
    public virtual decimal TotalAmount { get; set; }
}

TotalAmount 属性 映射为如下公式:

Map(x => x.TotalAmount).Formula("Amount + Tax");

然后我有两个派生类型(table-per-type):

public class EventTransaction : Transaction {
}

public class ProductTransaction : Transaction {
    public virtual Delivery { get; set; }
}

现在,如果我执行以下查询:

var transactions = session.Query<Transaction>().ToList();

查询执行成功,但理想情况下我希望针对产品交易的 TotalAmount 包括运费。因此在产品映射中 class 我像这样覆盖了 TotalAmount:

Map(x => x.TotalAmount).Formula("Amount + Tax + Delivery");

然而,这不起作用,因为生成的 SQL 假定金额和税收字段在产品交易中 table 并在字段前加上错误的别名。

我尝试使用生成的 SQL 中的正确别名对其进行硬编码。然而,虽然这适用于此查询,但我发现使用的别名与替代查询并不总是相同,随后引发了错误。

如果有人能提供帮助,我将不胜感激。谢谢

公式基本上是原始的 SQL 语句(将对其进行处理以添加别名),因此您无法访问继承的属性等。但是您可以编写一个 SQL 子选择来提供什么你需要。

(SELECT TOP 1 pt.Delivery + t.Tax + t.Amount 
FROM ProductTransaction pt 
INNER JOIN Transaction t ON pt.Id=t.Id 
WHERE pt.Id=Id)