NHibernate linq - Используйте лямбда-выражение вместо атрибута формулы на отображении

NHibernate имеет атрибут на элементе свойства в отображающейся конфигурации, названной "формулой", которая позволяет инжекциям sql "вычислять" свойство. Проблемой, которую я имею, является формула с помощью синтаксиса SQL непосредственно. Есть ли способ иметь nhibernate.linq для использования лямбда-выражения вместо того, чтобы использовать свойство формулы.

У меня есть следующее:

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.balance> 0 выборов i;

Как я ввожу balanceexpression.expression в запрос linq?

8
задан longday 9 February 2010 в 23:34
поделиться