【发布时间】:2010-02-09 23:34:11
【问题描述】:
NHibernate 在映射配置中的 property 元素上有一个名为“formula”的属性,它允许注入 sql 来“计算”一个属性。我遇到的问题是直接使用 sql 语法的公式。有没有办法让 nhibernate.linq 使用 lambda 表达式而不是使用公式属性。
我有以下几点:
public class Invoice
{
public virtual int Id { get; protected set; }
public virtual decimal Amount { get; set; }
public virtual decimal Paid { get; set; }
public virtual decimal Balance
{
get { return BalanceExpression.Expression.Compile().Invoke(this); }
}
}
public class BalanceExpression
{
public static Expression<Func<Invoice, decimal>> Expression
{
get { return i => i.Amount - i.Paid; }
}
}
<class name="Invoice">
<id name="Id">
<generator class="hilo"/>
</id>
<property name="Amount"/>
<property name="Paid"/>
<property name="Balance" formula="Amount - Paid" access="readonly"/>
</class>
我希望 nhibernate 使用 balanceexpression.expression 而不必将 sql 语法放在公式属性中,这样我就可以从我的映射配置中删除公式属性并编写如下查询:
来自 session.linq() 中的 i 其中 i.balance > 0 选择我;
如何将 balanceexpression.expression 注入到 linq 查询中?
【问题讨论】:
标签: sql linq nhibernate