2012-04-25 13 views
7

मेरे पास कुछ प्रश्न हैं जिन्हें मुझे एक साथ चलाने की आवश्यकता है और मैं क्वेरी का उपयोग कर ऐसा कर सकता हूं QueryMultiple सुविधा।क्या डेपर में मल्टीमैपिंग और क्वेरी मल्टीपल का उपयोग करने का कोई तरीका है?

लेकिन इस मामले में मैं यह पता लगाने में सक्षम नहीं हूं कि मैं मल्टीमैपिंग का उपयोग कैसे कर सकता हूं।

क्या कोई इसे प्राप्त करने का तरीका जानता है?

उत्तर

10

मुझे लगता है कि यह वही है जो आप खोज रहे हैं, हालांकि उस क्वेरी के उदाहरण के बिना बताना मुश्किल है जिसे आप निष्पादित करने का प्रयास कर रहे हैं।

var sql = @"Select * 
      From Parent 
      Left Join Child on Child.ParentID = Parent.ParentID 
      Where Parent.ParentID = @id 
      ... more queries"; 

using(var reader = connection.QueryMultiple(sql, new {id=selectedId})) 
{ 
    var stuff = reader.Read<Parent, Child, Parent>(
     (p,c)=>p.Child = c, splitOn: "ChildId"); 
    // Continue to read from the other queries in your sql. 
} 

मूल रूप से SqlMapper.GridReader की Read विधि Query विस्तार विधि के समान है। आपको केवल splitOn पैरामीटर मिलता है जिसमें ओवरलोड में से एक है जो दो सामान्य प्रकार से अधिक लेता है।

1

एक और धागा से लिया एक त्वरित उदाहरण Theres: how-to-get-values-for-child-objects

var sql = 
@" 
select * from PROFILES where profileId= @id 
select * from PROFILEIMAGES where OWNER_PROFILESIDFK = @id"; 

using (var multi = connection.QueryMultiple(sql, new {id=selectedId})) 
{ 
    var profile = multi.Read<Models.PROFILE>().Single(); 
    profile.ProfileImages = multi.Read<Model.PROFILEIMAGES>().ToList(); 
} 

प्रत्येक क्वेरी वस्तुओं जिसके परिणामस्वरूप आपके संस्थाओं के लिए मैप किया जा सकता का एक सेट देता है।

+0

धन्यवाद एलेक्स। लेकिन मैं [मल्टीमैपिंग] का उपयोग करने का एक तरीका ढूंढ रहा हूं (https://github.com/SamSaffron/dapper-dot-net/blob/master/Tests/Tests.cs#L459) सुविधा –

+0

क्या आप एक उदाहरण प्रदान कर सकते हैं आप क्या करने की कोशिश कर रहे हैं? – Alex

+1

मूल रूप से मैं एसक्यूएल में denormalized कुछ क्षेत्रों को स्टोर (उदाहरण: एक डीटीएजी क्षेत्र जहां मेरे पास सभी टैग ";", आदि से अलग हैं)। और जब मैं QueryMultiple (रीड विधि) का उपयोग करता हूं तो मल्टीमैपिंग क्वेरी –

संबंधित मुद्दे