NHibernate ha un attributo sull'elemento proprietà nella configurazione di mappatura denominata "formula" che consente alle iniezioni di sql di "calcolare" una proprietà. Il problema che ho è la formula usando direttamente la sintassi sql. C'è un modo per avere nhibernate.linq per usare un'espressione lambda invece di usare la proprietà formula.NHibernate linq - Utilizzare l'espressione lambda al posto dell'attributo formula sulla mappatura
Ho il seguente:
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>
voglio NHibernate di utilizzare la balanceexpression.expression invece di dover mettere sintassi SQL nell'attributo formula in modo da poter rimuovere l'attributo formula dal mio mappatura config e scrivere query come segue:
da i in session.linq() dove i.balance> 0 select i;
Come si inserisce l'espressione balanceexpression.expression nella query linq?