Допустим, у меня есть следующая модель базы данных:
В коде это выглядит так:
Категории кнопок
public class ButtonCategory
{
public ButtonCategory()
{
this.Buttons = new HashSet<Button>();
this.SubCategories = new HashSet<ButtonCategory>();
}
[Key]
public int Id { get; set; }
[Required]
public string Description { get; set; }
public int? ParentCategoryId { get; set; }
[ForeignKey("ParentCategoryId")]
public virtual ButtonCategory ParentCategory { get; set; }
public virtual ICollection<ButtonCategory> SubCategories { get; set; }
public virtual ICollection<Button> Buttons { get; set; }
}
Кнопки
public class Button
{
[Key]
public int Id { get; set; }
public int? ButtonCategoryId { get; set; }
[ForeignKey("ButtonCategoryId")]
public virtual ButtonCategory ButtonCategory { get; set; }
}
Как видите, мои ButtonCategories имеют список ссылок на самих себя.
Возникшая проблема заключается в том, что я хочу преобразовать все ButtonCategories в другой тип, скажем, ButtonCategoriesMock. И я хочу сделать то же самое для всех кнопок в списках. Проблема в том, что я не знаю и не могу сказать, сколько существует подуровней. Возможно, что существует только одна подкатегория, но также и то, что это подкатегория подкатегории подкатегории,... и так далее.
Как легко преобразовать все элементы ButtonCategory и элементы Button в другой тип?
Заранее спасибо!