复杂的关系花了这么多时间试图得到这个工作后建议,我不得不承认,我靠近拉我的头发,并希望得到一些帮助,实际上发生之前!需要帮助,并在创造EF 4.1
这是很难解释的实际应用断章取义 - 这是我能想到的最好的例子。
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不为空,请获取所有内容,并且基本上继续对所有返回的类别执行此操作)
我已经非常接近这个了,但是,我只是不能解决所需的EF FluentAPI/Data Annotations,以便将多个链接从Category重新导入Category nav。
最后,我还想尽可能获得一个CategoryNav
/ID,并获取它所属的原始对象 - 即使它是最后一个子类别 - 链条中的20个。这完全没有要求,因为我有逻辑*
- 我只是确定我不是最有效的方法。 - 目前认为在类别中创建“TheObject”FK会更容易 - 我知道你不应该在不需要的地方重复数据,但是,我认为这将是迄今为止最简单的解决方案。
*
目前,我正在走很长的路程 - 获取类别/ Nav的ID,检查它是否存在为Object/CategoryNavID
,如果不存在,则返回到类别,然后搜索将它作为categoryID的任何类别,然后获取该类别ID,并基本上保持循环此操作,直到找到顶级对象。
无论如何,所有/任何帮助将大大赞赏!很高兴回答任何问题。
我希望这读起来很好,如果没有,我把它归咎于编码整天,几乎没有在哪里....请让我知道,我会在早上重新编辑/尝试整理。 – Wil