우리는 우리의 C# 코드에서 열거이 :이 값은 또한 데이터베이스 필드에 저장됩니다내 SQL 스크립트/procs 전체에 매직 넘버를 하드 코딩하지 않고 TSQL에서 enum을 어떻게 사용합니까?
public enum JobStatus
{
Ready = 0,
Running = 1,
Cancelling = 2,
}
을, 우리는 많은 TSQL의 (주로 저장 발동뿐만 아니라 일부 배치 및 SSIS)가 그 또한 프로세스 데이터 :
SELECT TOP 1 @JobSID = JobSID
FROM Job
WHERE Status = 0 /* JobStatus.Ready */
ORDER BY SubmitDate ASC
CREATE TABLE ImportCrossEffect(
/* lots deleted */
Source tinyint
DEFAULT 1 NOT NULL -- 0: Unknown (default), 1:Imported, 2:Keyed
)
어떻게 하드 TSQL의 "매직 넘버"를 코딩 피할 수 있습니까?
C# 및 TSQL 측면에서 열거 형이 일치하지 않을 위험을 어떻게 제거합니까?
(나는 솔루션을 원하는만큼 나는 C#을 태그를 포함 한 그 C# 및 TSQL 측면 모두에서 열거 형의 "단일 소스"정의)
업데이트 :
데이터베이스에 열거 형 이름이있는 테이블이 없기 때문에 값은 단지 작은 int 열에 저장됩니다.
저는 모든 enum을 "마법의 가치"로 "확장"할 수있는 SQL 전처리 기가 필요했습니다.
@OMG 조랑말, 내가보기를 사용하는 이상적인 좋아한다 데이터베이스에 뷰를 업데이트하는 것이 용이하다. –