मैं इस भंडार विधिnHibernate और QueryOver API के साथ एक अलग परिणाम कैसे प्राप्त करें?
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();
}
तुम एक मुक्त पाठ खोज स्ट्रिंग और की टैग एक सूची की आपूर्ति की है। समस्या यह है कि यदि किसी संदेश में एक टैग होता है तो एक टैग को डुप्लीकेट बार सूचीबद्ध किया जाता है। मुझे संदेश इकाई के आधार पर एक विशिष्ट परिणाम चाहिए। मैंने
Projections.Distinct
पर देखा है लेकिन इसके लिए विशिष्ट प्रश्नों के लिए गुणों की एक सूची की आवश्यकता है। यह संदेश मेरी इकाई रूट है, जिसमें अधिकांश इकाई गुणों की आपूर्ति किए बिना इस व्यवहार को प्राप्त करने का एक तरीका है?
अग्रिम धन्यवाद, ऐन्डर्स
आईसीआरटीरिया एपीआई QUeryOver के साथ बहुत धाराप्रवाह नहीं है, लेकिन। ट्रांसफॉर्मिंग (ट्रांसफॉर्मर्स.डिस्टिंट रूट एंटीटी); सही काम करता है। – Anders
.TransformUsing (ट्रांसफॉर्मर्स। डिस्टिंट रूट एंटीटी) पेजिंग के साथ बिल्कुल काम नहीं किया:/कोई अन्य विचार? – Anders
यह पेजिंग के साथ काम नहीं करेगा। पेजिंग प्रश्नों के लिए आपको अनुमानों का उपयोग करने की आवश्यकता होगी – Sly