Slapper.Automapper with Dapper.net Guid Ids를 사용합니다.

dapper slapper.automapper

문제

Dapper.net을 사용하여 하나의 평평한 SQL 쿼리를 중첩 된 객체로 매핑해야합니다.

Slapper.Automapper는 이것을하는 좋은 방법 인 것 같습니다. 이 질문에 대한 답에 자세히 설명되어 있습니다.

Dapper.Net에서 일대일 쿼리를 어떻게 작성합니까?

내가 Guids를 사용하여 얻은 잘못된 데이터 세트 : 여기에 이미지 설명을 입력하십시오.

public string MrFlibble3()
{
    using (var connection = new SqlConnection(Constr))
    {
        Slapper.AutoMapper.Cache.ClearInstanceCache();

        const string sql = @"SELECT tc.[IDG] as ContactIdg
                                ,tc.[ContactName] as ContactName
                                ,tp.[Idg] AS TestPhones_PhoneIdg
                                ,tp.[ContactIdg] AS TestPhones_ContactIdg
                                ,tp.[Number] AS TestPhones_Number
                                FROM TestContact tc
                                INNER JOIN TestPhone tp ON tc.Idg = tp.ContactIdg";

        // Step 1: Use Dapper to return the  flat result as a Dynamic.
        dynamic test = connection.Query<dynamic>(sql);

        // Step 2: Use Slapper.Automapper for mapping to the POCO Entities.
        // - IMPORTANT: Let Slapper.Automapper know how to do the mapping;
        //   let it know the primary key for each POCO.
        // - Must also use underscore notation ("_") to name parameters;
        //   see Slapper.Automapper docs.
        Slapper.AutoMapper.Configuration.AddIdentifiers(typeof(TestContact), new List<string> { "ContactIDg" });
        Slapper.AutoMapper.Configuration.AddIdentifiers(typeof(TestPhone), new List<string> { "PhoneIdg" });

        var testContact = (Slapper.AutoMapper.MapDynamic<TestContact>(test) as IEnumerable<TestContact>).ToList();

        string flibblethis = "";

        foreach (var c in testContact)
        {
            foreach (var p in c.TestPhones)
            {
                // Console.Write("ContactName: {0}: Phone: {1}\n", c.ContactName, p.Number);
                flibblethis += "Contact Name: " + c.ContactName + ". Number: " + p.Number + "<br />";
            }
        }

        return flibblethis;
    }
}

Slapper를 제외하고 예제에서 잘 작동합니다. Id가 int가 아닌 Guid 인 경우, Outapper가 작동하지 않는 것 같습니다.

Slapper.Automapper에서 Guid ID를 사용할 수있는 방법이 있습니까? 아니면 Dapper.net을 사용하여지도를 작성하는 다른 방법이 있습니까?

(Slapper.Automapper는 널리 사용되지 않아이 문제에 관해 온라인으로 볼 수 없습니다.)

수락 된 답변

ContactIdgContactIDg 와 같이 속성 이름에 대문자와 소문자가 다릅니다. Slapper는 대소 문자를 구분하는 매핑을 수행합니다 ( 이 문제점 참조).



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.