C # 데이터베이스 매퍼

c# dapper orm

문제

내 데이터베이스 쿼리 결과를 내 C # 코드에서 강하게 입력하는 개체를 매핑하려고했습니다. 그래서 나는 데이터베이스에서 질의를 실행하고 리플렉션을 사용하여 레코드 열을 객체 속성에 매핑하는 SqlConnection 클래스에 빠르고 지저분한 도우미 메서드를 작성했습니다. 코드는 다음과 같습니다.

  public class User
    {
        public int id { get; set; }
        public string firstname { get; set; }
        public string lastname { get; set; }
        public DateTime signupDate { get; set; }
        public int age { get; set; }
        public string gender { get; set; }
    }


   var user = conn.Query<User>("select id,firstname,lastname from users");      

  public class User
    {
        public int id { get; set; }
        public string firstname { get; set; }
        public string lastname { get; set; }
        public DateTime signupDate { get; set; }
        public int age { get; set; }
        public string gender { get; set; }
    }


   var user = conn.Query<User>("select id,firstname,lastname from users");      

위의 코드에서 더 잘할 수있는 것이 있다면 리플렉션을 사용하여 값을 묶는 내 접근법에 대한 두 번째 의견을 원했습니다. 아니면 동일한 결과를 얻기 위해 취할 수있는 완전히 다른 접근 방식이 있다면?

아마 내가 propertyInfos에 대한 루프를 제거하고 대신 사전을 사용하여 헬퍼 메소드의 코드를 향상시킬 수 있다고 생각합니다. 비틀어 질 필요가있는 것이 있습니까?

추신 : 나는 Dapper에 대해 알고 있습니다. 저는 더 잘 배우는 데 도움이되도록 저의 비슷한 것을 구현하고 싶었습니다.

수락 된 답변

당신이 한 일은 근본적으로 linq-to-SQL이나 다른 OR 매퍼가하는 일입니다. 그것이 어떻게 작동하는지에 대한 자세한 내용을 알기 위해서는 무언가를 처음부터 작성하는 것이 좋습니다.

더 많은 영감을 원한다면 또는 생산 용으로 사용할 준비가 된 것을 갖고 싶다면 linq-to-SQL을 읽는 것이 좋습니다. 경량이지만 유능합니다.


인기 답변

내가 생각할 수있는 몇 가지가있다.

  1. 루프를 건너 뛰려면 다음을 사용할 수 있다고 생각합니다.

    reader[item.Name]
    
  2. 나는 나 자신과 비슷한 것을 해왔지만, 나는 결코 대담하게 굴지 않았다. 리플렉션을 사용하는지 잘 모르겠지만 스킬을 연마하기 위해 다른 사람의 코드를 읽는 것이 좋습니다 (Scott Hanselman은 자주 이렇게하는 것이 좋습니다).

  3. 당신은 또한 볼 수 있습니다 : http://www.codeproject.com/KB/database/metaquery_part1.aspx

  4. 필드를 데이터베이스 열에 매핑하는 특성을 구현할 수 있지만 이는 재미있는 일입니다.

편집하다:

5 : 독자가 while 루프를 건너 뛰고 첫 번째 행을 가져 와서 쿼리가 하나의 객체만을 반환한다는 사실을 문서화 할 수 있으므로 쿼리가 1,000 개의 행을 반환하면 천 개의 행을 가져 오지 않습니다.




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