プレゼンテーション層への文字列セットの取得
-
03-07-2019 - |
質問
C#で記述され、NHibernateを使用してオブジェクトをデータベースにマッピングする病院情報システムに取り組んでいます。 MVCパターンは、ビジネスロジックをUIから分離するために使用されています。ここに問題があります。
可変サイズの異なる文字列セットをUIに取得するにはどうすればよいですか
たとえば、Contact
オブジェクトには、どの都市の連絡先が住んでいるかを保持するCity
という名前のプロパティがあります。アプリが書かれている国には80以上の都市があります。これらの都市をどのようにコンボボックスに書き込むことができますか? (またはデータグリッド、テーブル、...)この例では、都市番号が固定されています。長い間別の都市を追加する必要はありません。 (都市リストが変更されても、再コンパイルは問題ありません)
たとえば、FooBar
オブジェクトにはCITY
という別のプロパティがあり、1000個の異なる文字列値を保持し、これらの値はそのプロパティのコンボボックスから選択されます。また、ユーザーが必要に応じてこのセットを拡張できます。これらの値をコンボボックスに読み込むにはどうすればよいですか? (文字列リストがコンボボックスオブジェクトに静的に書き込まれる場合、再コンパイルが問題になります)
以下のように異なる解決策があります
- コードまたはデザイナーでコンボボックスに静的に書き込まれるすべての文字列値
- リソースファイルから値を取得
- これらの値をXMLファイルに書き込みます(実際には上記と同じですが、再コンパイルする必要はありません)
- NHibernateを使用して
StringHolder
オブジェクトを作成し、Type
テーブルからリストに値を取得します -
Value
およびSTRINGHOLDER
プロパティを持つ<=>という名前のクラスを作成します。すべての文字列値(<=>および<=>を含む)は、<=>という名前の1つのテーブルにのみ書き込まれます。そして、これらの値を<!> quot; CITY <!> quotのようなキーで取得します。または<!> quot; FOOBAR <!> quot; NHibernateで。
どちらを選択しますか?または、私に別のものを提案してもらえますか?
ありがとうございます
解決
場所が実際に何かに使用される場合は、それらをデータベースに入れます。データ<!> quot;が実際には使用されていない<!> quot;であるが、ユーザーインターフェースを改善するために都市検索が提供されている場合、XMLファイルオプションも悪い方法ではありません。
使用するということは、ニューヨークのすべての従業員をリストするなどのようなものを意味します。 <!> quot; dead data <!> quot;の場合は、表示するだけで、必要な作業量とリスクが最も少ないソリューション(ファイルオプションの可能性があります)を探します。
他のヒント
ソリューション#4に投票します。それは私がいつも同じような状況でそれをやった方法です。きれいなソリューションのように思えます。
List <!> lt; string <!> gt;を使用してどう思いますか。市のリストは?この文字列のリストをDALまたはBLにロードして、UIに渡します。
FooBar値にも同じソリューションが適しているはずです。
CityまたはFooBarに関連付けられたIDがあり、たとえばNYであり、DBの数値IDが1である場合、KeyValuePair <!> lt; TKey、TValue <!> gt;を使用できます。ジェネリックを使用すると、このKeyValuePairに入れるデータを指定できます。都市名またはFooBarの文字列値をキーにし、数値IDを値にすることができます。
わずか2セント。