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)
我有以下型号:
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)