Потратив так много часов, пытаясь заставить это работать, я должен признать, что я близок к тому, чтобы вырвать свои волосы и получить некоторую помощь, прежде чем это действительно произойдет!
Это очень труднообъяснить фактическое приложение вне контекста - это лучший пример, который я могу придумать.
public class TheObject{
public int ID {get;set;}
public string name {get;set;}
public int? CategoryNavID {get;set;}
public virtual Category CategoryNav {get;set;}}
public class CategoryNav{
public int id {get;set;}
public virtual ICollection<Category> Category {get;set;}}
public class Category{
public int ID {get;set;}
public string name {get;set;}
//The category this is currently in.
public int CategoryNavID
//To create sub categories.
public int? CategoryID {get;set;}
public virtual Category Category {get;set;}}
Итак, в основном, существует множество объектов, к объекту может быть присоединено столько же категорий, и далееэто, категория может иметь несколько категорий (к бесконечному уровню).
Опять же, трудно объяснить вне контекста - это не настоящая система, но это конечная цель, которую я пытаюсь достичь.
Честно говоря, я пыталсядля большей части сегодняшнего дня, чтобы сделать это, и я не уверен, лучше ли мне с классом CategoryNav, или есть лучший, более прямой способ сделать это.
Я просто хочу решениегде я могу легко получить объект, затем перейти по всем категориям, а затем по всем подкатегориям до бесконечного уровня.(В данный момент я думаю получить объект, а затем, если CategoryNavID не равен NULL, получить все содержимое и в основном продолжать делать это для всех возвращаемых категорий)
Я очень близко подошел кэто, но я просто не могу разработать аннотации EF FluentAPI / Data, необходимые для того, чтобы иметь более одной ссылки из категории обратно в навигацию по категориям.
Наконец, я также хотел бы, если возможно, найти способполучите CategoryNav
/ ID и получите исходный объект, которому он принадлежит - даже если это последняя подкатегория - 20 по цепочке.Это совсем не обязательно, поскольку у меня есть логика *
- я просто уверен, что не делаю это самым эффективным способом.- В настоящее время думаю, что было бы проще создать FK «TheObject» в категории - я знаю, что вы не должны повторять данные там, где они не нужны, но я думаю, что это будет самое простое решение на сегодняшний день.
*
В настоящее время я иду очень далеко - получаю идентификатор категории / Nav, проверяю, существует ли она как Object/CategoryNavID
, и если нет, она возвращается к категории,и ищет любую категорию, указав ее в качестве categoryID, затем получает этот идентификатор категории и, в основном, продолжает циклировать это действие до тех пор, пока не найдет верхний объект.
В любом случае, вся / любая помощь будет чрезвычайно полезна!С удовольствием отвечу на любые вопросы.