私はC#を使って(仮説的な)アプリケーション - オンラインストアを作成しています。 (データ構造の設計は静的型の言語です
- 製品番号(必須)
- 名(必須)
- 価格(必須)
- 評価:
私は、各製品には、以下の情報が関連付けられた、製品のデータベースを持っています
- 販売数量(オプション) - これは、この商品の総額であり、
私は、製品のフィルタリングされたリストを示す4ページを持っています。ページには、製品ごとに異なる情報を表示:
- 1ページ目:PN、名前、価格
- 2ページ目:PN、名前、価格、評価
- 3Dページ:PN、名前、価格、販売数量
- 4ページ目:PN、名前、価格、評価、販売数量
私の質問はで、どのように私は少し重複してすべての私のページに対応するためのデータ構造を設計していますか?
ブルートフォースアプローチ各ページの種類を作成することです:
IList<Product>
IList<ProductWithRating>
IList<ProductWithSoldQuantity>
IList<ProductWithRatingAndSoldQuantity>
後の3はProduct
から派生することができますが、原因多重継承ProductWithRatingAndSoldQuantity
の欠如に評価し、SoldQuantity製品の両方から派生することはできません。
動的言語では、私が必要とするフィールドを追加して満足しています。別のdictonaries、例えば中
だから私は、余分な情報を格納することにより、動的言語のアプローチをシミュレートすることができ(評価、数量販売):
{
IList<Product> Products;
IDictionary<Product, Rating> ProductRatings;
IDictionary<Product, SoldQuantity> ProductSoldQuantities;
}
// is equivalent to
IList<ProductWithRatingAndSoldQuantities>
がすべてを含み、その後、部分的に周りを通過製品構造の構築初期化されたオブジェクトはではなく、私が探している解決策です。
提案がありますか?
ああ、私が 'ProductWithRating'と言ったとき、私は** rating **を属性として持つ** type **の名前を意味しました。 'ProductWithRating' **は、評価のある商品のみのコレクションを意味しません**。 –
私は意味があるように多くの属性や少数の属性を設定します。私はEF4を使ってすべてのデータベース項目を処理するので、すべてのデータベースフィールドを戻して意味を持ち、実際には仮想プロパティなどのプロキシを使用してDBからオブジェクトをインスタンス化します。あなたのMyRatingに関しては、もしそれがかなり疎れていれば、おそらくそれをProductと0..1-1の関係を持つ新しいエンティティ/タイプとして追加することになるでしょう(製品は0または1のMyRatings、MyRatingはちょうど1 Productを持つことができます)。 ProductWithRatingルートは、痛いほど速く、どんなコストでも避けられます。 – RichardW1001
EFからView/ViewModelにProductを渡しますか? –