nhibernate查询实现接口的所有对象

时间:2010-08-31 20:10:14

标签: nhibernate fluent-nhibernate mapping

例如,如果你有一个Apple:IWhatever,还有一个Orange:IWhatever你想找到它们两个因为它们是IWhatevers,你需要在NHibernate中做些什么?

它完全依赖于HQL或条件查询,还是您还必须在映射中执行某些操作?如果有映射要求,Fluent NHibernatee可以支持吗?

2 个答案:

答案 0 :(得分:4)

对于Criteria,您无需映射它。只是:

session.CreateCriteria<IWhatever>()
       .List<IWhatever>();

请记住,您只能对IWhatever中存在的字段进行查询/排序/投影。

答案 1 :(得分:1)

您可以执行Union SubClass映射。不幸的是,它在Fluent中不受支持。

您的映射类似于:

<class name="IWhatever" abstract="true">
    <id name="Id">
    </id>

    <union-subclass name="Apple">
        <property name="Bla" type="int"/>
    </union-subclass>

    <union-subclass name="Orange">
        <property name="Bla" type="int"/>
    </union-subclass>
</class>