簡體   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