繁体   English   中英

在存储库模式中从3个相关模型访问数据的情况下,在何处添加方法原型

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM