2
我有两个类NHibernate的3.2 QueryOver不同的属性
public class News
{
public virtual int Id { get; protected set; }
public virtual string Topic { get; set; }
public virtual Category Category { get; set; }
}
public class Category
{
public virtual int Id { get; protected set; }
public virtual string Name { get; set; }
public virtual ISet<News> News { get; set; }
}
和映射
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="News" namespace="NewsManagement.Models">
<class name="News" table="News">
<id name="Id">
<generator class="native" />
</id>
<property name="Date" not-null="true" />
<many-to-one name="Category" fetch="join" column="CategoryId" class="Category, NHibernateManyToOne" not-null="true"/>
</class>
</hibernate-mapping>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="News" namespace="NewsManagement.Models">
<class name="Category" table="Categories">
<id name="Id" column="Id">
<generator class="native" />
</id>
<set name="News" fetch="join" cascade="all-delete-orphan">
<key column="CategoryId" />
<one-to-many class="News, NHibernateOneToMany" />
</set>
</class>
</hibernate-mapping>
,我想采取分页消息,通过其类别的名称排序。 下面是该查询:
Session.QueryOver<News>().JoinQueryOver(x => x.Category).OrderBy(x => x.Name).Asc.Skip(pageNumber*pageSize).Take(pageSize).List<News>();
但结果我把我的列表中很多重复的消息。我认为这可能是因为在映射中启用并在查询中使用的连接。那么,有没有解决方案如何通过一个属性或另一种方式来避免这个问题?
但我不能申请'鲜明(新MyEqualityComparer())'无处除了'名单()'。如果我将'Distinct'应用于此,它将不会是我需要的,因为它会从列表中删除它,因为我知道 –
2011-12-27 17:56:43
因此,将它应用于'.List()' –
2011-12-27 17:57:21
之后,但不是以适当的方式。例如,一个页面应该包含5条记录,但是在清单上它只有2个。所以我需要以某种方式将不同的清单应用于清单 – 2011-12-27 18:03:59