NHibernate在名为“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语法放在公式属性中,这样我就可以从映射配置中删除公式属性并按如下方式编写查询:
来自i的session.linq()
其中i.balance> 0
选择我;
如何将balanceexpression.expression注入linq查询?