2012-05-29 3 views
0

코드에서 사용하려는 DB 테이블에 메타 데이터가 있습니다. 메타 데이터는 사용 된 시간을보고하기위한 여러 종류의 시간 형식입니다.코드에서 db에 정의 된 메타 데이터 사용

데이터가 될 수 있습니다 NormalTime 초과 근무 휴가 질병 등

데이터는 ID와 설명과 다른 물건이있다.

ID = 1 
Name = "Regular time" 
Description = "Normal work time" 

내 코드에서이 데이터와 관련된 좋은 방법은 무엇입니까?

예를 들어보고 된 모든 NormalTime을 합산하는 메소드를 생성하려면 (내가 NormalTime ID 및 금액 및 기타 물건을 사용하는 다른 시간대를 저장하는 다른 테이블이 있습니다) 어떻게해야합니까?

나는 ID를 하드 싶지 않다 : 내가 뭘하고 싶어하는 것은

Select * from xyz where TimeType = 1 

:

Select * from xyz where TimeType = NormalTime. 

그렇지 않으면 코드 읽기가 매우 어려워진다

.

내 현재의 솔루션에서 나는 ID와 관련이있는 문자열 const를 하드 코딩했습니다. 누군가가 TimeType에 대한 설명을 NormalTime에서 하드 코딩 된 문자열로 바꾸면 문제가 생깁니다. 다른 하나는 db 데이터 sais입니다. 그리고 예, DB 내용을 제어 할 필요가 없기 때문에 이런 일이 일어났습니다. (

그래서 DB 테이블에서 변경이 발생할 수있는 최상의 유지 보수 가능하고 읽기 쉬운 방법으로 어떻게 해결할 수 있습니까? 읽기 하드. 누군가가 DB에 TimeTypes을 추가 할 수 있으며 나중에 내가 코드를 사용하는 방법을 추가 할 수 있습니다 곳. 비주얼 스튜디오의 T4 텍스트 생성 템플릿을 사용하는 것이 작업을 수행하는

답변

2

한 가지 방법. (엔티티 프레임 워크의 사용 코드 생성 용)

메타 데이터로 테이블을 가져 오는 코드가 포함 된 템플릿 파일을 만들 수 있습니다을 데이터베이스에서 가져 와서 정적 상수가있는 클래스를 생성합니다.

데이터베이스가 변경 될 때마다 실행해야합니다. 하지만 당신이 코드를 작성할 때마다 을 설정하여 다시 생성 할 수 있다고 생각합니다.

A question about T4 templates

관련 문제