문제

우리는 C#에 작성된 병원 정보 시스템을 연구하고 Nhibernate를 사용하여 객체를 데이터베이스에 매핑하고 있습니다. MVC 패턴은 UI와 비즈니스 로직을 분리하는 데 사용됩니다. 여기에 문제가 있습니다.

UI에 가변 크기의 다른 문자열 세트를 어떻게 얻습니까?

예를 들어 a Contact 객체에는 이름이 지정된 속성이 있습니다 City 그것은 어떤 도시 접촉이 살고 있습니다. 앱이 작성된 국가에는 80 개가 넘는 도시가 있습니다. 그 도시를 어떻게 콤보 상자에 쓸 수 있습니까? (또는 데이터 그리드, 테이블, ...)이 예에서는 도시 번호가 고정되어 있습니다. 오랫동안 다른 도시를 추가 할 필요가 없습니다. (도시 목록이 변경되면 재 컴파일이 문제가되지 않습니다)

예를 들어 a Contact 객체의 이름은 다른 속성을 가지고 있습니다 FooBar 1000 개의 다른 문자열 값을 보유 할 것이며이 값은 해당 속성의 콤보 상자에서 선택됩니다. 그리고이 세트는 사용자가 원한다면 성장할 수 있습니다. 이 값으로 콤보 상자를 어떻게로드합니까? (문자열 목록이 콤보 박스 객체에 정적으로 작성된 경우 다시 컴파일하는 것이 문제입니다)

아래와 다른 솔루션이 있습니다

  1. 코드 또는 디자이너의 콤보 상자에 정적으로 작성된 모든 문자열 값
  2. 리소스 파일에서 값을 가져옵니다
  3. 해당 값을 XML 파일에 작성하십시오 (실제로 위와 동일하지만 다시 컴파일 할 필요는 없음)
  4. 을 만들다 City 값을 반대하고 값을 목록으로 가져옵니다 CITY nhibernate가있는 테이블
  5. 이름을 지정하십시오 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 센트.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top