2

Entity Framework で資産登録を表す一連のクラスに取り組んでいます。質問を単純にするために、3 つのクラスを作成しました。

資産

アセット ID、シリアル番号、購入日など、すべてのアセット タイプに適用可能なフィールドが含まれています。

コンピューター

アセットから派生し、コンピュータ アセットに固有のフィールドを追加します (例: MAC アドレス、ホスト名)

モニター

アセットから派生し、Monitor アセットに固有のフィールド (サイズなど) を追加します。


純粋な C# では、次のように呼び出してこれらのクラスをインスタンス化できます。

Computer DansComputer = new Computer(){ AssetID=12345, SerialNumber="12345", Hostname="DanComputer"};

私が新しいアセットをキャプチャするために使用している UI では、ユーザーが (アセットから) 新しいアセット クラスに関する基本データを入力し、たとえばコンピュータ アセットを作成しているなどと区別する必要があります。これがエレガントではないかどうか疑問に思っています...現在の形式では、アセットのタイプに関係なく、挿入を実行する擬似コードは次のようになります。

  1. Asset クラスに関するデータをキャプチャする
  2. これらのデータを EF 経由で資産テーブルにコミットします
  3. アセット タイプに応じてビューにリダイレクトし、新しいコンピュータ ビューなどのタイプ固有のデータをキャプチャします。
  4. 以前にコミットされた資産を取得し、それを適切なタイプ (例: コンピューター) にキャストし、コンピューター固有のフィールドを新しいオブジェクトに投影します。
  5. コンピュータをデータベースにコミットします。

そこでのビュー間のコミットは好きではありません。

ユーザーが追加したいアセットのタイプ (例: コンピュータ、プリンタ) を選択し、新しいコンピュータ/プリンタを作成するためのビューが表示されるという「有効な」アプローチはありますか? このソリューションは、私には理想的とは言えません。

  1. アセットの種類ごとに MVC ビューを作成する必要がありますが、これは DRY 原則に違反しているようです...
  2. 可能なすべてのアセット タイプのリストを手動で保持し、ユーザーが使用するタイプを選択できるように何らかの UI を表示する必要があります。

ただし、この UI を作成する他の方法は考えられません。

ここで本当に明らかな何かが欠けていますか?

4

1 に答える 1

1

最も簡単な方法は、手順を変更することだと思います。

  1. ユーザーに選択肢を与える: どのアセットか
  2. このアセットの適切なアクションにリダイレクト
  3. アセットの共通パーツ (部分ビューなどを使用) を含むビューをレンダリングし、選択したものに指定します
  4. データを取得してデータベースにコミットします。
于 2013-04-09T09:49:58.367 に答える