0

我有以下实体:

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

我最终想显示一个页面,该页面采用 aIEnumerable<Product>并按Products第一个排序-Category然后按每个排序CategoryProductsSubCategory

我的 ViewModel 应该是什么样的?

起初我想出了这样的事情:

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

但是后来我的控制器变得充满了提取唯一性的逻辑,Categories而且SubCategories我没有干净的方法来处理每个Category人都有不同的SubCategories.

任何有按类别对对象进行分类经验的人 - 你能在正确的方向上推动我如何干净地处理这种情况吗?我可以完成工作,但我觉得我的代码不必要地草率而不是干燥。

我还想知道我的Product班级是否以不恰当的方式处理Categories/ SubCategories- 其他人有同样的感觉吗?(我认为我的类别可能更适合完全作为单独的对象)

4

1 回答 1

1

关于您关于模型结构的问题,我认为 Category 绝对应该是一个单独的实体 - 您的数据库将处于规范化状态(Category 不应在数据库中重复多次)。也许 :

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 来为单个产品拥有多个类别)。这也创建了 Category 和 SubCategory 之间的关系。

于 2012-07-14T23:52:39.033 回答