Looking for dapper Keywords? Try Ask4Keywords

Dapper.NET सरल मल्टी-टेबल मैपिंग


उदाहरण

मान लीजिए कि हमारे पास शेष घुड़सवारों की एक क्वेरी है जिन्हें एक व्यक्ति वर्ग को आबाद करने की आवश्यकता है।

नाम उत्पन्न होने वाली रहने का स्थान
डैनियल डेनेट 1942 संयुक्त राज्य अमरीका
सैम हैरिस 1967 संयुक्त राज्य अमरीका
रिचर्ड डॉकिन्स 1941 यूनाइटेड किंगडम
public class Person
{
    public string Name { get; set; }
    public int Born { get; set; }
    public Country Residience { get; set; }
}

public class Country
{
    public string Residence { get; set; }
}

हम एक अधिभार Query<> का उपयोग कर देश के एक उदाहरण के साथ व्यक्ति वर्ग के साथ-साथ निवास संपत्ति को पॉपुलेट कर सकते हैं Query<> जो एक Func<> लेता है जिसका उपयोग लौटा हुआ उदाहरण लिखने के लिए किया जा सकता है। Func<> अंतिम जेनेरिक तर्क के साथ 7 इनपुट प्रकार ले सकता है हमेशा रिटर्न प्रकार।

var sql = @"SELECT 'Daniel Dennett' AS Name, 1942 AS Born, 'United States of America' AS Residence
UNION ALL SELECT 'Sam Harris' AS Name, 1967 AS Born, 'United States of America' AS Residence
UNION ALL SELECT 'Richard Dawkins' AS Name, 1941 AS Born, 'United Kingdom' AS Residence";

var result = connection.Query<Person, Country, Person>(sql, (person, country) => {
        if(country == null)
        {
            country = new Country { Residence = "" };
        }
        person.Residience = country;
        return person;
    }, 
    splitOn: "Residence");

splitOn: "Residence" के उपयोग पर ध्यान दें splitOn: "Residence" तर्क जो कि आबादी वाले (इस मामले में Country ) अगली श्रेणी के प्रकार का 1 कॉलम है। डैपर स्वचालित रूप से ईद नामक एक कॉलम को विभाजित करने के लिए देखेगा, लेकिन यदि यह एक नहीं मिलता है और splitOn प्रदान नहीं किया जाता है तो एक System.ArgumentException को एक उपयोगी संदेश के साथ फेंक दिया जाएगा। इसलिए यद्यपि यह वैकल्पिक है, आपको आमतौर पर एक splitOn मान की आपूर्ति करनी होगी।