के साथ बहु मानचित्रण नीचे कोड मैं वस्तुओं की एक पृष्ठांकित सूची वापस जाने के लिए उपयोग कर रहा हूँ है:डैप्पर - एक ही वापसी मान
string query2 = @"
select count(*) as TotalCount from blogposts p where p.Deleted = 0 and p.PublishDate <= @date
select * from (
select p.*,
row_number() over(order by publishdate desc) as rownum
from blogposts as p
where p.Deleted = 0 and p.PublishDate <= @date
) seq
where seq.rownum between @x and @y";
using (var cn = new SqlConnection(connectionString))
{
cn.Open();
using (var multi = cn.QueryMultiple(query2, new { x= lower, y = upper, date = DateTime.UtcNow }))
{
var totalCount = multi.Read<int>().Single();
var posts = multi.Read<PostModel>().ToList();
return new PagedList<PostModel>(posts, page, pageSize, x => totalCount);
}
}
हालांकि यह काम करता है, तो इसका मतलब है कि मैं अपने मापदंड दो बार परिभाषित करने के लिए है, एक बार गिनती क्वेरी के लिए और एक बार परिणाम क्वेरी के लिए।
string query = @"
select * from (select p.*,
row_number() over(order by publishdate desc) as rownum,
count(*) over() as TotalCount
from blogposts as p) seq
where seq.rownum between @x and @y";
हालांकि, मैं इस डैप्पर का उपयोग कर मैप करने के लिए सक्षम नहीं है: बल्कि स्ट्रिंग संयोजन करने के लिए सहारा की तुलना में, मैं सिर्फ एक क्वेरी निष्पादित कर सकते हैं। मैं ऊपर की तरह एक ही विधि का उपयोग नहीं कर सकता क्योंकि कई परिणाम नहीं हैं। मैंने मल्टी मैपिंग का उपयोग करने का प्रयास किया है, लेकिन यह एक आईनेमरेबल लौटने की अपेक्षा करता है।
मैं निम्नलिखित में कैसे मैप करूं?
public class PostList
{
public IEnumerable<PostModel> Posts;
public int TotalCount { get; set; }
}
धन्यवाद
बेन
प्रतिक्रिया के लिए धन्यवाद। मुझे लगता है कि मैं दोहरी क्वेरी के साथ रहूंगा और चीजों को सूखा रखने के लिए कुछ सहायकों का निर्माण करूंगा। –