동적 쿼리를 dapper에서 개체로 변환

c# dapper dynamic object

문제

Dapper.Query에서 반환 된 동적 변수를 객체로 변환 할 수 있습니까? 예:

class MyClass 
{
    public int Id { get; set;}
    public string SomeData { get; set; }
}

IEnumerable<dynamic> data = sql.Query<dynamic>(SELECT * FROM MyClassTable");
foreach(var record in data)
{
    int parent_id = record.SomeId;
    // any simple way to fill MyClass properites from record?
    // instead of doing in manually?
    MyClass obj = ?
}

수락 된 답변

레코드로부터 MyClass 등록 정보를 채우는 간단한 방법은 없습니까? 수동으로하는 대신에?

아쉽게도 수동으로해야합니다. 가장 좋은 방법은 매핑 논리를 한 곳으로 이동하여 데이터 액세스 레이어에서 다시 사용할 수 있도록하는 것입니다. 일반적으로 확장 메서드를 사용하지만 리플렉션을 사용하여 일치하는 속성 이름을 설정할 수도 있습니다. 그러나 개인적인 견해로는 일반적으로 성능 이점에 대해 dapper를 사용하고 리플렉션 사용은 약간 비싸기 때문에 일반적으로 이러한 경우 반사.

Dapper.Query에서 반환 된 동적 변수를 객체로 변환 할 수 있습니까?

예. 위에서 설명한대로

귀하의 질문을 단순화하고 싶었지만 귀하가 게시 한 예제가 MyClass 가 해당 선택 쿼리에 의해 반환 된 레코드를 나타내는 경우 동적 개체를 반환 할 필요가 없음을 지적하는 것이 중요합니다. 당신은 단순히 다음을 할 수 있습니다 ...

var data = sql.Query<MyClass>(SELECT * FROM MyClassTable");


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