Wie erzielt man mit nHibernate und QueryOver API ein eindeutiges Ergebnis?

Ich habe das Repository-Methode

    public IList<Message> ListMessagesBy(string text, IList<Tag> tags, int pageIndex, out int count, out int pageSize)
    {
        pageSize = 10;
        var likeString = string.Format("%{0}%", text);
        var query = session.QueryOver<Message>()
            .Where(Restrictions.On<Message>(m => m.Text).IsLike(likeString) || 
            Restrictions.On<Message>(m => m.Fullname).IsLike(likeString));

        if (tags.Count > 0)
        {
            var tagIds = tags.Select(t => t.Id).ToList();
            query
                .JoinQueryOver<Tag>(m => m.Tags)
                .WhereRestrictionOn(t => t.Id).IsInG(tagIds);
        }            

        count = 0;
        if(pageIndex < 0)
        {
            count = query.ToRowCountQuery().FutureValue<int>().Value;
            pageIndex = 0;
        }
        return query.OrderBy(m => m.Created).Desc.Skip(pageIndex * pageSize).Take(pageSize).List();
    }

Liefern Sie einen freien text search-string und eine Liste von Tags.
Das problem ist, dass wenn eine Nachricht mehr als einen tag, es ist mal dupliziert.
Ich möchte ein bestimmtes Ergebnis auf der Grundlage der Message-Entität. Ich habe

Projections.Distinct

Aber es erfordert eine Liste der Eigenschaften, um auf die deutliche Frage auf. Diese Meldung ist meiner Entität root gibt es die meisten ein Weg, um dieses Verhalten ohne die Bereitstellung alle von der Entität Eigenschaften?

Vielen Dank im Voraus, Anders

InformationsquelleAutor der Frage Anders | 2011-01-06

Schreibe einen Kommentar