문자열 세트를 프레젠테이션 레이어로 가져옵니다
-
03-07-2019 - |
문제
우리는 C#에 작성된 병원 정보 시스템을 연구하고 Nhibernate를 사용하여 객체를 데이터베이스에 매핑하고 있습니다. MVC 패턴은 UI와 비즈니스 로직을 분리하는 데 사용됩니다. 여기에 문제가 있습니다.
UI에 가변 크기의 다른 문자열 세트를 어떻게 얻습니까?
예를 들어 a Contact
객체에는 이름이 지정된 속성이 있습니다 City
그것은 어떤 도시 접촉이 살고 있습니다. 앱이 작성된 국가에는 80 개가 넘는 도시가 있습니다. 그 도시를 어떻게 콤보 상자에 쓸 수 있습니까? (또는 데이터 그리드, 테이블, ...)이 예에서는 도시 번호가 고정되어 있습니다. 오랫동안 다른 도시를 추가 할 필요가 없습니다. (도시 목록이 변경되면 재 컴파일이 문제가되지 않습니다)
예를 들어 a Contact
객체의 이름은 다른 속성을 가지고 있습니다 FooBar
1000 개의 다른 문자열 값을 보유 할 것이며이 값은 해당 속성의 콤보 상자에서 선택됩니다. 그리고이 세트는 사용자가 원한다면 성장할 수 있습니다. 이 값으로 콤보 상자를 어떻게로드합니까? (문자열 목록이 콤보 박스 객체에 정적으로 작성된 경우 다시 컴파일하는 것이 문제입니다)
아래와 다른 솔루션이 있습니다
- 코드 또는 디자이너의 콤보 상자에 정적으로 작성된 모든 문자열 값
- 리소스 파일에서 값을 가져옵니다
- 해당 값을 XML 파일에 작성하십시오 (실제로 위와 동일하지만 다시 컴파일 할 필요는 없음)
- 을 만들다
City
값을 반대하고 값을 목록으로 가져옵니다CITY
nhibernate가있는 테이블 - 이름을 지정하십시오
StringHolder
여기에는Type
그리고Value
재산. 모든 문자열 값 (포함City
그리고FooBar
)는 이름이 하나만이라는 테이블로 작성됩니다STRINGHOLDER
. 그리고 nhibernate와 함께 "city"또는 "foobar"와 같은 키로 그 값을 얻으십시오.
어느 것을 선택 하시겠습니까? 아니면 다른 것을 제안 할 수 있습니까?
감사합니다
해결책
위치가 실제로 무엇이든 사용되는 경우 데이터베이스에 들어가십시오. 데이터가 "실제로 사용되지 않는"경우, 사용자 인터페이스를 개선하기 위해 도시 조회가 제공되는 경우 XML 파일 옵션도 나오는 방법이 아닙니다.
사용한다는 것은 내 것과 같은 것을 의미합니다 뉴욕에 모든 Emplyees를 나열하십시오 그리고 그런 것들. "죽은 데이터"인 경우 표시 되려면 최소한의 작업과 최소한의 위험이 필요한 솔루션을 찾으십시오. 이는 파일 옵션 일 수 있습니다.
다른 팁
솔루션 #4에 투표 할 것입니다. 그것이 내가 항상 비슷한 상황에서 한 방식입니다. 더 깨끗한 솔루션처럼 보입니다.
목록을 사용하는 것에 대해 어떻게 생각하십니까?u003Cstring> 도시 목록을 위해? 이 문자열 목록을 DAL 또는 BL에로드 한 다음 UI로 전달하십시오.
동일한 솔루션은 FooBar 값에도 좋습니다.
City 또는 Foobar와 관련된 ID가있는 경우 NY와 DB의 숫자 ID는 1이라고 말하면 KeyValuePair를 사용할 수 있습니다.u003CTKey, TValue> . 제네릭을 사용하면이 keyvaluepair의 데이터가 어떤 데이터인지 지시 할 수 있습니다. 도시 이름 또는 foobar의 문자열 값은 키 일 수 있으며 숫자 ID는 값이 될 수 있습니다.
단지 2 센트.