NHibernate公式使用了错误的前缀
本文关键字:错误 前缀 NHibernate | 更新日期: 2023-09-27 18:00:25
我有以下模型:
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");
然后我有两个派生类型(每个类型的表):
public class EventTransaction : Transaction {
}
public class ProductTransaction : Transaction {
public virtual Delivery { get; set; }
}
现在,如果我进行以下查询:
var transactions = session.Query<Transaction>().ToList();
查询执行成功,但理想情况下,我希望产品交易的TotalAmount包含Delivery成本。因此,在产品映射类中,我覆盖TotalAmount,如下所示:
Map(x => x.TotalAmount).Formula("Amount + Tax + Delivery");
然而,这并没有起到作用,因为生成的SQL假定Amount和Tax字段在产品交易表中,并使用错误的别名作为字段的前缀。
我尝试使用生成的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)