在存储库模式中访问3个相关模型的数据时,在哪里添加方法原型

本文关键字:数据 在哪里 原型 方法 添加 模型 模式 存储 访问 3个 | 更新日期: 2023-09-27 18:10:37

我正在尝试创建一个ASP。NET MVC应用程序,使用存储库模式和依赖注入作为设计模式。我有三个相关的模型

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对象,其中包含的数据将包含导航菜单(类别),每个类别下的子类别和子类别下的子类别作为每个子类别下的菜单项。那么我如何定义存储库和方法原型呢?

如果你能建议我任何方法,可以做所有我刚才解释的使用Entityframework我将感激你。谢谢你

foreach (Category category in context.Categories)
{
    foreach (SubCategory subCategory in category.SubCategories)
    {
        foreach (SubSubCategory subSubCategory in subCategory.SubSubCategories)
        {
        }
    }
 }

这就是我所做的,以获得所有相关的数据。如果有什么好的方法可以得到所有相关的数据,请告诉我。

在存储库模式中访问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<Category> SubCategories { get; set; }
}

这样,所有类别上的所有操作都可以用简单的递归方法完成。

private void SomeOperation(ICollection<Category> list)
{
    foreach (Category category in list)
    {
        //Do something
        SomeOperation(category.SubCategories);
    }
}