NHibernate Sorting a有很多系列

时间:2009-05-02 09:26:34

标签: nhibernate

我有实体食谱,它有一个HasMany集合评论。

在MVC控制器动作中我得到了食谱 然后显示评论。

如何按“EnteredOn”的降序对评论进行排序?

我在哪里对它们进行排序?

  Recipe recipe = session.Load<Recipe>(id);
    NHibernateUtil.Initialize(recipe.Comments);

马尔科姆

1 个答案:

答案 0 :(得分:2)

我想我会按原样检索评论(不是特别排序),然后在显示评论之前对食谱的评论集合进行排序。

根据您创建类的方式和映射,我认为这是自设置和包映射以来唯一的方式,代表NHibernate中的无序集合。

这样的事情:

Recipe recipe = session.Get<Recipe> (id);

var orderedComments = recipe.Comments.OrderBy ( comment => comment.EnteredOn );

foreach( Comment c in orderedComments )
{
   // display the comment
}

我的Reciple实体看起来像这样:

public class Recipe
{
   // ...
   ...

   private ISet<Comment> _comments = new HashedSet<Comment>();

   public ReadOnlyCollection<Comment> Comments
   {
      get { return _comments.ToList().AsReadOnly(); }
   }

   public void AddComment( Comment c )
   {
       if( c != null && !_comments.Contains (c) )
       {
          c.Recipe = this;
          _comments.Add (c);
       }
   }

   public void RemoveComment(Comment c )
   {
       if( c != null && _comments.Contains (c) )
       {
           c.Recipe = null;
           _comments.Remove(c);
       }
   }
}

和映射:

<class name="Recipe" table="Recipes">
    ...
    <set name="Comments" access="field.camelcase-underscore" ... >
        ...
    </set>
</class>