私が苦労しているのは、もっと哲学的に、DropDownListアイテム(または実際にはあらゆる種類の選択リストアイテム)をモデルの一部にするべきか、それともUIまたはビジネスレイヤーにハードコーディングするべきかということです。それとも、これはViewModelの良い使い方ですか?
ドロップダウンリストの種類によっては、明らかにそれらをモデルの一部にする必要があります。たとえば、顧客に関連付けられている注文IDのドロップダウンリストは、モデルによって生成される必要があります。
私が「ルックアップ」データと呼ぶ他の種類は、私にはあまり明確ではありません。たとえば、性別。フィールドに2つのアイテムを入力するために、ラウンドトリップルックアップを強制するのはなぜですか?おそらくこれは時期尚早の最適化ですが、50個のフィールドがある場合、1ページに入力するだけで多くのラウンドトリップになります。確かに、キャッシュはそこで役立つかもしれませんが、それは厄介なようです。
また、これらすべてのルックアップリストをモデルに追加すると、モデルが不必要に乱雑になるのではないかと心配しています。特にあなたがそれらをたくさん持っているなら。
UIでハードコーディングするのではなく、ビジネスレイヤーでハードコーディングするオプションもあります。おそらく、このデータを入力するだけのクラスを作成することさえあります。
答えが「データモデル」の一部である場合でも、データモデルにルックアップフィールドのセットごとに異なるテーブルを設定する必要があるかどうかという問題があります。データモデルにそのようなフィールドが200または300ある場合、それは200または300のテーブルであり、データモデルの保守が実際に複雑になります。
しばらく前に共通のルックアップテーブルを使用することについて質問しましたが、これは悪い考えであるというコンセンサスがありました。しかし、フィールドがたくさんある非常にデータ量の多いアプリケーションの場合、私は自分自身に疑問を感じます。
さて、多くの方が「状況次第」とおっしゃる方もいらっしゃると思いますが、私は「一般的な」答えを見ています。一般的に、ここでの経験則は何ですか?