我正在寻找Fluent NHibernate中的方法来获取PARENT类型的所有对象的列表 使用标准。 我有一个父对象和一个派生的孩子。 父亲包含一份孩子名单。
问题在于我使用时:
ICriteria crit = session.CreateCriteria(typeof(Parent))
IList<Parent> myRes = crit.List<Parnet>()
NH返回父元素和派生子元素的列表,这是我所要求的“正确”b / c,但这不是我需要的。 (children元素应该只在父对象内部,但由于它们也是父类型 - 因为它们是从它派生的...... NH也使用这种方法带来它们。)
如何在没有派生孩子的情况下获取所有“父亲”元素的列表?
这是第一个答案(@Stefan Steinegger's)
session
.CreateQuery("from Parent where Parent.class == :class")
.AddType(typeof(Parent));
看起来我需要类似的东西 - 但它在Fluent NHibernate中不起作用。
谢谢, 达尼
答案 0 :(得分:0)
问题实际上是:您如何确定Parent
是否是根父母?有各种方法:
部分“不是继承的”可能很容易确定,但实际上是一个糟糕的定义。在使用继承时,您实际上并不关心实际上是否继承了作为某种类型的对象,这是继承的本质。
部分“未包含在任何其他父级中很难以有效的方式找到。
您可以设置父对象的引用。根是Parent
,其父引用为null。
您从公共基类派生您的Root。 Child不再是Root,Root是Root
。
我建议采取最后一种选择。
BTW:你可以过滤确切的类型,但只能使用HQL。
session
.CreateQuery("from Parent where Parent.class == :class")
.AddType(typeof(Parent));