SQL 쿼리를 IList로 변환 Dapper 사용

c#-4.0 dapper sql sql-server visual-studio-2012

문제

VS2012SQL Server 2012

Dapper 를 내 VS2012 추가했습니다.

여기에 이미지 설명을 입력하십시오.

나는 다음과 같은 하나의 클래스를 가진다.

    public class DomainClass
    {
        public SexEnum sex { get; set; }
        public int Id { get; set; }
        public string Name { get; set; }
    }

    enum SexEnum
    {
        Men = 0, Women = 1
    }

테이블 ATest 같은 쿼리가 있습니다 :

Select * From ATest

이 쿼리를 실행하고 내 결과를 Dapper를 사용 IList of DomainClass 로 변환 할 수 있습니까?

수락 된 답변

public static IList<DomainClass> GetAllDomains()
{
    using (var con = new SqlConnection(Properties.Settings.Default.YourConnection))
    {
        const String sql = "Select sex, Id, Name  From ATest ORDER BY Name ASC;";
        con.Open();
        IList<DomainClass> domains = con.Query<DomainClass>(sql).ToList();
        return domains;
    }
}

인기 답변

이 정적 클래스와이 확장 메서드를 작성합니다.

/// <summary>
/// Put this Class in your project 
/// and use ConvertSqlQueryToIList extension method on SqlConnection object.
/// </summary>
public static class Convert
{

    public static IList<T> ConvertSqlQueryToIList<T>(
                                           this SqlConnection sqlConn, 
                                           T domainClass, 
                                           string sqlQueryCommand
                                                            )
    {
        ConnectionState connectionState = ConnectionState.Closed;
        try
        {

            if (sqlConn.State != ConnectionState.Open)
            {
                sqlConn.Open();
                connectionState = sqlConn.State;
            }

            IList<T> result = sqlConn.Query<T>(sqlQueryCommand).ToList();

            return result;
        }
        catch (Exception exception)
        {

            throw exception;
        }
        finally
        {
            if (connectionState == ConnectionState.Closed)
                sqlConn.Close();
        }
    }

}

그리고 Dapper가 int 필드를 int 형으로 변환하는 것을 좋아합니다.

내 quesion에 섹스 같은 속성.



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