2013-05-30 110 views

回答

0

基於片段,我想你已經完成了所有的映射。您也將有類似這樣的片段標準:

var criteria = session 
    .CreateCriteria<OrderItem>() // class with properties quantity, price ... 
    .AddOrder(?) // how to append the order 
    ; 
var list = criteria.List<OrderItem>(); // Sorted list of OrderItems 

唯一缺少點是OrderBy。由於NHibernate的可擴展性,我們可以創建自己的Order對象,並建立Criteria的時候,我們可以調用.AddOrder(CustomOrder...)下面是代碼:

public class CustomOrder : Order 
{ 
    public CustomOrder(string propertyName, bool ascending) 
     : base(propertyName, ascending) { } 

    public override SqlString ToSqlString(ICriteria criteria 
             , ICriteriaQuery criteriaQuery) 
    { 
     var sqlString = new SqlString(propertyName); 
     return sqlString.Append(this.ascending ? " asc" : " desc"); 
    } 
} 

所以,現在我們可以把它放在一起:

var criteria = session 
    .CreateCriteria<OrderItem>() 
    .AddOrder(new CustomOrder("(quantity * price)", false) 
    ; 
var list = criteria.List<OrderItem>(); // Sorted list of OrderItems 
+0

完美的作品! – stefan

+0

很高興聽到! NHiberante祝你好運;) –