동일 유형의 두 속성을 매핑하는 Dapper 멀티플

dapper

문제

연락처에 내 데이터베이스에 플랫 폼으로 저장된 연락처가 있다고 가정 해 봅시다. 다음과 같이 쿼리합니다.

SELECT Name, HomeHouseNumber, HomePostcode, WorkHouseNumber, WorkPostcode FROM Contacts

내 C # 코드에 좀 더 구조가 필요하고 집과 회사 주소가있는이 연락처를 간단하게 정의해야합니다.

class Address
{
    public string HouseNumber { get; set; }
    public string Postcode { get; set; }
}

class Contact
{
    public string Name { get; set; }
    public Address HomeAddress { get; set; }
    public Address WorkAddress { get; set; }
}

나는 다중 매핑을 사용하여 다음과 같이 선택 항목의 별칭을 지정하여 집 주소를 추출 할 수 있음을 발견했습니다.

IEnumerable<Contact> GetContacts()
{
    return Connection.Query<Contact, Address, Address, Contact>(
        "SELECT Name, HomeHouseNumber as HouseNumber, HomePostcode as Postcode, WorkHouseNumber, WorkPostcode FROM Contacts",
        (contact, home, work) =>
        {
            contact.HomeAddress = home;
            contact.WorkAddress = work;
            return contact;
        },
        splitOn: "HouseNumber,WorkHouseNumber");
}

그러나 작업 주소 열을 매핑 할 수있는 방법으로 별칭을 지정할 수는 없습니다. Dapper가이 매핑을 수행 할 수 있습니까, 아니면 수동으로해야합니까?

수락 된 답변

믿을 수 없을 정도로이 솔루션은 열에 동일한 별칭을 지정합니다. 나는 SQL이 이것을 허용 할 것이라고 생각하지는 않았지만 Dapper가 완벽하게 매핑합니다.

IEnumerable<Contact> GetContacts()
{
    return Connection.Query<Contact, Address, Address, Contact>(
        "SELECT Name, HomeHouseNumber as HouseNumber, HomePostcode as Postcode, WorkHouseNumber as HouseNumber, WorkPostcode as Postcode FROM Contacts",
        (contact, home, work) =>
        {
            contact.HomeAddress = home;
            contact.WorkAddress = work;
            return contact;
        },
        splitOn: "HouseNumber,HouseNumber");
}


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow