Looking for dapper Keywords? Try Ask4Keywords

Dapper.NET Eenvoudige toewijzing van meerdere tabellen


Voorbeeld

Stel dat we een vraag hebben over de resterende ruiters die een Person-klasse moeten invullen.

Naam Geboren residentie
Daniel Dennett 1942 Verenigde Staten van Amerika
Sam Harris 1967 Verenigde Staten van Amerika
Richard Dawkins 1941 Verenigd Koninkrijk
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; }
}

We kunnen de personklasse en de eigenschap Residence vullen met een instantie van Country met een overload Query<> waarvoor een Func<> die kan worden gebruikt om de geretourneerde instantie samen te stellen. De functie Func<> kan tot 7 Func<> aannemen, waarbij het laatste generieke argument altijd het retourtype is.

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");

Let op het gebruik van het splitOn: "Residence" , dat de 1e kolom is van het volgende te typen klassentype (in dit geval Country ). Dapper automatisch op zoek naar een kolom met de naam Id te splitsen op, maar als het niet een te vinden en splitOn is niet voorzien van een System.ArgumentException zal worden gegooid met een nuttig bericht. Dus hoewel het optioneel is, moet u meestal een splitOn waarde splitOn .