[英]Where to add method prototype in case of accessing data from 3 related models in repository pattern
我正在尝试使用重新记录模式和依赖项注入作为设计模式来创建ASP.NET MVC应用程序。 我有3个相关模型
public class Category
{
public int CategoryId { get; set; }
public string Name { get; set; }
public string TagName { get; set; }
public string TagColor { get; set; }
public string ImageUrl { get; set; }
[ForeignKey("CategoryId")]
public virtual ICollection<SubCategory> SubCategories { get; set; }
}
public class SubCategory
{
public int SubCategoryId { get; set; }
public int CategoryId { get; set; }
public string Name { get; set; }
public string TagName { get; set; }
public string TagColor { get; set; }
public string ImageUrl { get; set; }
[ForeignKey("SubCategoryId")]
public virtual ICollection<SubSubCategory> SubSubCategories { get; set; }
}
public class SubSubCategory
{
public int SubSubCategoryId { get; set; }
public int SubCategoryId { get; set; }
public string Name { get; set; }
public string TagName { get; set; }
public string TagColor { get; set; }
public string ImageUrl { get; set; }
}
现在,我想定义一个方法,该方法将返回包含数据的所有三个相关模型的JSON对象,该模型将包含导航菜单(类别),每个类别下的SubCategories和每个SubCategory下的SubSubCategory作为MenuItems。 那么,如何定义存储库和方法原型?
另外,如果您可以向我建议使用Entityframework可以完成我刚才解释的所有功能的任何方法,我将不胜感激。 谢谢
foreach (Category category in context.Categories)
{
foreach (SubCategory subCategory in category.SubCategories)
{
foreach (SubSubCategory subSubCategory in subCategory.SubSubCategories)
{
}
}
}
这就是我要获取所有相关数据的目的。 如果有什么好方法可以获取所有相关数据,请告诉我。
我建议使用一个类而不是三个不同的类。
public class Category
{
public int CategoryId { get; set; }
public string Name { get; set; }
public string TagName { get; set; }
public string TagColor { get; set; }
public string ImageUrl { get; set; }
[ForeignKey("CategoryId")]
public virtual ICollection<Category> SubCategories { get; set; }
}
这样,可以使用简单的递归方法完成所有类别上的每个操作。
private void SomeOperation(ICollection<Category> list)
{
foreach (Category category in list)
{
//Do something
SomeOperation(category.SubCategories);
}
}
希望对您有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.