2011-01-22 5 views
0

웹/UI, 서비스, 리포지토리, 공용 및 다음과 같은 레이어가이 경우 중요하지 않습니다.데이터 조회 용 상수에 대한 질문

사이트에 생성 된 모든 이메일 데이터를 보관하는 이메일 테이블이 있습니다. 이메일 테이블에서 어떤 이메일을 호출해야하는지 추적하는 EmailType 테이블도 있습니다.

제 이메일 서비스에는 다음과 같은 방법이 있습니다.

public string SendPurchaseConfirmationEmail(string email, string firstName, string dealName) { 
    Email email = EmailRepository.GetByCurrentByType(EmailType.PurchaseEmail.GetStringValue()); 
    variables = createVariablesList(); 
    SendEmail(email.ListId, email.externalEmailId, variables); 
} 

EmailType은 GUID이고 내 저장소에 저장되는 값 속성을 가져 오는 확장자가있는 unum입니다. EmailType 테이블은 테스트 이메일을 생성하는 admin에서 훌륭하게 작동하지만 실제 웹 레이어의 경우 서비스 호출에 저장소의 하드 코딩 된 값이 필요합니다.

제 질문은이 방법을 사용하는 것이 가장 좋고 권장되는 방법입니까, 아니면이 방법을 좀 더 동적으로 만들 수 있습니까? 이 부분에 대해 싫어하는 부분은 웹 레이어가 저장소에 접속해야하므로 모든 서비스에 대한 메소드가 필요하다는 것입니다.

코드 분리가 문제가 될 경우 서비스 레이어의 열거 형 배치가 올바르지 않습니다.

감사에서 "웹 계층"호출 (뷰에서 호출 서비스)와 관련하여이

public string SendConfirmationEmail(EmailType selectedType, string email, string firstName, string dealName) {  
    Email email = EmailRepository.GetByCurrentByType(selectedType);  
    variables = createVariablesList();  
    SendEmail(email.ListId, email.externalEmailId, variables); 
} 

에 서비스 방법은, 당신이 뜻을 정확히 모르는

+0

"웹 레이어"란 무엇입니까? – mare

+0

죄송합니다. UI 또는 웹 레이어는 실제 aspx 페이지/뷰 및 컨트롤러이므로 MVC를 사용하고 있습니다. –

답변

0

예, '서비스'계층과 DB에서 일련의 이메일 유형에 대해 '키'값을 반복해야합니다.

이메일 테이블 (또는 DB 코드의 값에 쉽게 매핑되는 다른 값)에 저장된 '외래 키'값을 사용하지 않으면 다음과 같이 DB 조회를 수행해야합니다. 귀하의 이메일 유형 테이블.

전자 메일 유형 테이블에 정수 대리 키를 사용하고 그 유형 세트를 사용해야하는 모든 레이어의 대리 키 값에 매핑되는 이름있는 숫자 상수 세트를 만드는 것이 좋습니다 (특히 해당 레이어가 DB 자체에). 다른 모든 레이어는 이러한 레이어 중 하나를 통해 이름 상수 세트를 사용해야합니다.

0

변경하지만, 그것이 AJAX 호출이라면 호출에 대한 열거 형을 사용할 수 있습니다. AJAX 외에도 MVC에 기본적으로 GET 및 POST가 있기 때문에 어떤 종류의 호출을 할 수 있는지 알지 못합니다. 그리고 컨트롤러 액션에 POST를하면 다시 enum을 사용할 수 있습니다. 당신이 당신의 서비스 방법은 정적 만들 경우 물론이

EmailService.SendConfirmationEmail(EmailType.Purchase, email, fname, dealname); 

처럼

은, 위의 샘플은 유효합니다.

관련 문제