0

次のエンティティがあります。

public class Product{
    public int ID { get; set; }
    public string Name { get; set; }
    public string Category { get; set; }
    public string SubCategory { get; set; }
}

私は最終的に、 を取り、最初に を並べIEnumerable<Product>替え、次にそれぞれを で並べ替えるページを表示したいと考えています。ProductsCategoryCategoryProductsSubCategory

私のViewModelはどのように見えるべきですか?

最初に私は次のようなものを思いつきました:

public class ProductListViewModel{
    public IEnumerable<Product> Products { get; set; }
    public IEnumerable<string> Categories { get; set; }
    public IEnumerable<string> SubCategories { get; set; }
}

Categoriesしかし、その後、コントローラーは一意の andを抽出するためのロジックでいっぱいになり、それぞれが の異なるリストを持ってSubCategoriesいるという事実をきれいに処理する方法がありません。CategorySubCategories

オブジェクトをカテゴリ別に分類した経験のある人なら誰でも、この状況にきれいにアプローチする方法を正しい方向に向けてくれませんか? 私は仕事を成し遂げることができますが、コードを不必要にずさんで DRY ではないと感じています。

また、私のクラスが/Productを処理するために不適切な方法で構造化されているかどうかも疑問に思っています - 他の誰かが同じように感じていますか? (私のカテゴリは、完全に別のオブジェクトとして適していると考えています)CategoriesSubCategories

4

1 に答える 1

1

モデル構造に関するあなたの質問では、カテゴリは間違いなく別のエンティティである必要があると思います-データベースは正規化されていません(カテゴリはデータベースで複数回繰り返されるべきではありません)。多分 :

public class Product{
    public int ID { get; set; }
    public string Name { get; set; }
    public Category Category { get; set; }
}

public class Category{
    public int ID { get; set; }
    public string Name { get; set; }
    public SubCategory SubCategory { get; set; }
}


public class SubCategory{
    public int ID { get; set; }
    public string Name { get; set; }
}

このようにして、製品からカテゴリを分離できます (製品エンティティに ICollection を配置することで、1 つの製品に対して複数のカテゴリを作成することもできます)。これにより、Category と SubCategory の間の関係も作成されます。

于 2012-07-14T23:52:39.033 に答える