C# 클래스 NSoft.NFramework.Data.Mappers.NameMappingUtil

일반적으로 DATABASE의 컬럼명들은 대문자, 구분자('_', '[', ']', '_' 등)이 사용됩니다. 이런 Data 객체 (IDataReader, DataTable) 에서 Class로 만드려면 DATABASE의 컬럼 명과 Class의 Property 명이 매핑시켜줘야 합니다. NHibernate는 hbm.xml 이라는 Mapping 파일을 사용하고, Active Record는 Property에 Attribute를 정의해서 사용합니다. Solution을 만들때에는 위와 같이 정형적인 방식이 유리합니다만.... SI의 경우에는 좀 다릅니다. 아주 많은 Class를 만들어야 하고, 그 속성 정의뿐 아니라 Table 만이 아니라 필요에 따라 View, Stored Procedure 등으로부터 정보를 얻어 Instance로 만들어야 할 때가 있습니다. (물론 DataTable을 직접 이용하는 것이 Microsoft가 주장하는 가장 생산성이 높은 방법입니다. - 유지보수 등에서 문제가 있습니다.) 이 때 가장 좋은 방법은 Database 컬럼명과 Class의 속성명에 일정한 규칙을 정해 놓으면, 그 규칙에 따라 자동으로 매핑정보를 생성할 수 있습니다. 예를 들어 PROJECT_NAME => ProjectName, PROJECT_ID => ProjectId 등으로 변경할 수 있습니다. 좀 더 특수하게는 PROJECT_ID => Id 로 변경할 수 있겠죠. (다만 다른 컬럼도 접미사로 _ID 값을 가진다면 매핑에 실패할 것입니다.)
파일 보기 프로젝트 열기: debop/NFramework

공개 메소드들

메소드 설명
CapitalizeMappingFunc ( ) : string>.Func

컬럼명에서 속성명에 들어갈 수 없는 문자나 '_' 등의 구분 문자를 제거하여, 단어의 첫문자만 대문자로 (Capitalize) 만들어 속성명으로 매핑시킨다.

Mapping ( this reader, string>.Func mappingFunc ) : INameMap

컬럼명=속성명 매핑함수를 이용하여 지정된 DataReader의 컬럼명을 속성명으로 매핑한다.

NameMapping ( this reader, INameMapper nameMapper ) : INameMap

지정된 DataReader의 컬럼명을 속성명으로 변경한다. 매퍼는 IoC를 통해 얻는다.

NoChangeFunc ( ) : string>.Func

변경 없이 컬럼명 그대로 속성명으로 매핑한다.

RemovePrefixFunction ( string prefix ) : string>.Func

컬럼명에서 속성명에 들어갈 수 없는 문자나 '_' 등의 구분 문자를 제거하여, 단어의 첫문자만 대문자로 (Capitalize) 만들어 속성명으로 매핑시킨다.

메소드 상세

CapitalizeMappingFunc() 공개 정적인 메소드

컬럼명에서 속성명에 들어갈 수 없는 문자나 '_' 등의 구분 문자를 제거하여, 단어의 첫문자만 대문자로 (Capitalize) 만들어 속성명으로 매핑시킨다.
public static CapitalizeMappingFunc ( ) : string>.Func
리턴 string>.Func

Mapping() 공개 정적인 메소드

컬럼명=속성명 매핑함수를 이용하여 지정된 DataReader의 컬럼명을 속성명으로 매핑한다.
public static Mapping ( this reader, string>.Func mappingFunc ) : INameMap
reader this instance of IDataReader
mappingFunc string>.Func mapping function
리턴 INameMap

NameMapping() 공개 정적인 메소드

지정된 DataReader의 컬럼명을 속성명으로 변경한다. 매퍼는 IoC를 통해 얻는다.
public static NameMapping ( this reader, INameMapper nameMapper ) : INameMap
reader this instance of IDataReader
nameMapper INameMapper Mapper of column name and property name
리턴 INameMap

NoChangeFunc() 공개 정적인 메소드

변경 없이 컬럼명 그대로 속성명으로 매핑한다.
public static NoChangeFunc ( ) : string>.Func
리턴 string>.Func

RemovePrefixFunction() 공개 정적인 메소드

컬럼명에서 속성명에 들어갈 수 없는 문자나 '_' 등의 구분 문자를 제거하여, 단어의 첫문자만 대문자로 (Capitalize) 만들어 속성명으로 매핑시킨다.
public static RemovePrefixFunction ( string prefix ) : string>.Func
prefix string 접두사
리턴 string>.Func