我有实体食谱,它有一个HasMany集合评论。
在MVC控制器动作中我得到了食谱 然后显示评论。
如何按“EnteredOn”的降序对评论进行排序?
我在哪里对它们进行排序?
Recipe recipe = session.Load<Recipe>(id);
NHibernateUtil.Initialize(recipe.Comments);
马尔科姆
答案 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>