我有以下实体:
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>
的网页,然后按Products
对Category
进行排序 - 然后按Category
的每个Products
排序SubCategory
。
我的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
具有不同的{{1}列表的事实1}}。
任何具有按类别排序对象的经验的人 - 你能否正确地指导我如何干净地处理这种情况?我可以完成工作,但我觉得我的代码不必要地草率而且不干。
我也想知道我的SubCategories
课程是否以不恰当的方式处理Product
/ Categories
- 其他人是否也有同感? (我认为我的类别可能更适合作为单独的对象)
答案 0 :(得分: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,您也可以为单个产品分类)。这也会在Category和SubCategory之间创建一个关系。