2
によってNHibernateは3.2 QueryOver明確な私は、2つのクラスプロパティ
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'を適用すると、リストから削除されるので、私が必要とするものではありません。 –
' .List() ' –
の後に最後に適用します。しかし、適切な方法ではありません。たとえば、1ページには5つのレコードが含まれていなければなりませんが、リスト上の別名の後には2しかありません。リストにないように別名を適用する必要があります –