我有這些類:使用NHibernate的通過不是映射計算屬性進行排序
public class Employee
{
public virtual int Id { get; set; }
public virtual decimal Salary { get; set; }
public virtual decimal Tax { get; set; }
public virtual decimal NetSalary { get { return Salary * (1 - Tax); } }
}
public class EmployeeMap : ClassMap<Employee>
{
WithTable("Employees");
Id(x => x.Id);
Map(x => x.Salary);
Map(x => x.Tax);
}
而且我檢索員工形成這樣的數據庫:
var criteria = DetachedCriteria.For<Employee>();
criteria = criteria.AddOrder(Order.Asc(sortProperty)); // sortProperty is a string
現在這個效果很好如果我想按Salary
排序,但我想按NetSalary
排序。我將如何實現這一目標?我無法更改數據庫。我發現有一個Order.Asc()
的超載需要投影。我相信我必須在那個標準中創建一個投影,然後在那裏提供它,但是我沒有找到有關如何去做的信息。