Entity Framework で資産登録を表す一連のクラスに取り組んでいます。質問を単純にするために、3 つのクラスを作成しました。
資産
アセット ID、シリアル番号、購入日など、すべてのアセット タイプに適用可能なフィールドが含まれています。
コンピューター
アセットから派生し、コンピュータ アセットに固有のフィールドを追加します (例: MAC アドレス、ホスト名)
モニター
アセットから派生し、Monitor アセットに固有のフィールド (サイズなど) を追加します。
純粋な C# では、次のように呼び出してこれらのクラスをインスタンス化できます。
Computer DansComputer = new Computer(){ AssetID=12345, SerialNumber="12345", Hostname="DanComputer"};
私が新しいアセットをキャプチャするために使用している UI では、ユーザーが (アセットから) 新しいアセット クラスに関する基本データを入力し、たとえばコンピュータ アセットを作成しているなどと区別する必要があります。これがエレガントではないかどうか疑問に思っています...現在の形式では、アセットのタイプに関係なく、挿入を実行する擬似コードは次のようになります。
- Asset クラスに関するデータをキャプチャする
- これらのデータを EF 経由で資産テーブルにコミットします
- アセット タイプに応じてビューにリダイレクトし、新しいコンピュータ ビューなどのタイプ固有のデータをキャプチャします。
- 以前にコミットされた資産を取得し、それを適切なタイプ (例: コンピューター) にキャストし、コンピューター固有のフィールドを新しいオブジェクトに投影します。
- コンピュータをデータベースにコミットします。
そこでのビュー間のコミットは好きではありません。
ユーザーが追加したいアセットのタイプ (例: コンピュータ、プリンタ) を選択し、新しいコンピュータ/プリンタを作成するためのビューが表示されるという「有効な」アプローチはありますか? このソリューションは、私には理想的とは言えません。
- アセットの種類ごとに MVC ビューを作成する必要がありますが、これは DRY 原則に違反しているようです...
- 可能なすべてのアセット タイプのリストを手動で保持し、ユーザーが使用するタイプを選択できるように何らかの UI を表示する必要があります。
ただし、この UI を作成する他の方法は考えられません。
ここで本当に明らかな何かが欠けていますか?