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