하드 코딩 및 모범 사례에 대한 또 다른 질문이라고 생각합니다. 데이터베이스에 저장된 값 목록이 있고 fruit라고 가정 해 봅시다.이 테이블은 SSRS 보고서와 같은 다른 목적으로 사용되므로 데이터베이스에 있어야합니다.
1 Apple
2 Banana
3 Grapes
나는 사용자에게 그것들을 제시하고, 하나를 선택하고, 그의 프로파일에 FavouriteFruit로 저장되고 ID는 데이터베이스에 그의 레코드에 저장됩니다.
비즈니스 규칙 / 도메인 로직과 관련하여 특정 값에 로직을 할당하기위한 권장 사항은 무엇입니까? 사용자가 포도를 선택한 경우 추가 작업을 수행하고 싶습니다. 포도 값을 참조하는 가장 좋은 방법은 무엇입니까?
// Hard coded name
if (user.FavouriteFruit.Name == "Grapes")
// Hard coded ID
if (user.FavoriteFruit.ID == 3) // Grapes
// Duplicate the list of fruits in an enum
if (user.FavouriteFruit.ID == (int)Fruits.Grapes)
또는 다른 것?
물론 FavouriteFruit는 응용 프로그램 전체에서 사용되므로 목록을 추가하거나 편집 할 수 있습니다.
누군가 'Grapes'의 이름을 'Grape'로 바꾸겠다고 결정할 수 있으며 하드 코딩 된 문자열 옵션을 깨뜨릴 수 있습니다.
표시된대로 하드 코딩 된 ID는 명확하지 않지만 설명을 추가하면 해당 항목을 신속하게 식별 할 수 있습니다.
enum 옵션은 데이터베이스에서 데이터를 복제하는 것과 관련이 있으며 동기화되지 않을 수 있습니다.
어쨌든 의견이나 제안에 미리 감사드립니다.
MyApplication.Grape.ID
말하자면 말더듬입니다. "Apple"은 ID가 3보다 큰 "Red_Apple"이 아닙니다. 또한 "Apple"의 이름을 "Red_Apple"로 바꾸는 가능성은 3이 4 (또는 3)임을 선언하는 것보다 더 의미가 없습니다. 열거 형의 요점은 숫자 DNA를 추상화하는 것입니다. 따라서 비즈니스 모델에 아무런 의미가없는 임의의 관계형 DB 키 를 실제로 분리 해야 할 때 입니다.