SQL 쿼리 결과에서 더 광범위한 기능의 일부로 POCO에 매핑하는 이런 종류의 작업을 수행하는 몇 가지 무료 라이브러리가 있습니다. 예를 들어 AutoMapper은 SqlDataReader
을 IList<T>
without too much difficulty으로 변환 할 수 있습니다 (NHibernate).
또 다른 옵션은 LinqToSQL 또는 EntityFramework와 같은 프레임 워크를 사용하여 데이터를 캡슐화 한 다음 이들에 대한 쿼리를 작성하는 것입니다. lazy loading 등의 유용한 것들을 포함하여 EF 나 L2S를 사용하는 데는 여러 가지 이유가 있습니다.
또는 리플렉션을 사용하고 런타임에 매핑을 빌드하는 방법을 배울 수 있습니다. Linq Expression
개체를 사용하여 과거에이 작업을 수행했지만 약간의 이득 만 얻으려면 많은 작업이 필요합니다. 그래도 배우는 것은 재미 있습니다. P
리플렉션에 대해 자세히 알아 보려면 this article을 읽어 보시기 바랍니다. 리플렉션을 사용하여 IDataReader
을 모든 유형으로 매핑하는 간단한 예제가 있습니다. DBNull
을 처리하지 못하거나 서버에서 반환 된 데이터와 POCO 간의 차이가 발생하면 완전한 해결책이 아닙니다. 전체 기사를 읽은 다음 아직 명확하지 않은 내용을 조사하십시오.
그 이상으로 가고 싶다면 Linq 표현식을 사용하여 유형에 맞는 매핑 함수를 만든 다음 해당 표현식을 Func<IDataReader, T>
개체로 컴파일 할 수 있습니다. 많이 사용하는 것보다System.Reflection.Emit
... 아직은 간단하지.