- 我有各种各样
locations
的,每个都有自己的Products
. - 每个都
Product
属于一个SubCategory
。 - 每个都
SubCategory
属于一个Category
。
我需要Categories
在给定 a 时显示一个列表Location
,因此我需要一个 ViewModel 可以提取与所述位置的产品相关联的潜在类别列表。
我想做这样的事情(我的 ViewModel):
public class LocationSummaryViewModel
{
public Location Location { get; set; }
private ICollection<Category> categories;
public ICollection<Category> Categories
{
get
{
if ( Establishment != null )
{
foreach (var item in Location.Products)
{
categories.Add(item.SubCategory.Category);
}
return categories;
}
else
{
Categories.Add(new Category { Name = "Default Category" });
return categories;
}
}
}
}
但这在语法上不起作用,因为categories
从未实例化。另外,我不确定是否应该将这么多逻辑放在 ViewModel 中。
通过将逻辑从包含在我的 ViewModel 内的位置中的产品列表中提取类别信息,我是否朝着正确的方向前进?还是我会以一种非常不寻常的方式来解决这个问题?
如果我以完全奇怪的方式执行此操作,那么从 Location 实体中包含的产品列表中获取类别信息的更好方法是什么?
作为参考,我的位置模型:
public class Location
{
public int LocationId { get; set; }
public string Name { get; set; }
public virtual ICollection<Product> Products { get; set; }
}
我的产品型号:
public class Product
{
public int ProductId { get; set; }
public string Name { get; set; }
public int CategoryId { get; set; }
public virtual SubCategory SubCategory { get; set; }
public int LocationId { get; set; }
public virtual Location Location { get; set; }
}
和我的子类别模型:
public class SubCategory
{
public int SubCategoryId { get; set; }
public string Name { get; set; }
public int CategoryId { get; set; }
public virtual Category Category { get; set; }
}
更新:我在下面发布了我自己问题的潜在答案 - 欢迎更好的答案/建议