NHibernate-如何使用hbm文件映射从数据库获取条件数据

NHibernate-如何使用hbm文件映射从数据库获取条件数据,nhibernate,fluent-nhibernate,nhibernate-mapping,Nhibernate,Fluent Nhibernate,Nhibernate Mapping,目前,我正在使用hbm文件中的多对一元素从数据库中获取数据对象,如下所示 <property name="ContactId" length="4" /> <many-to-one name="DefaultContact" column="ContactId" class="Models.Contact" update="false" insert="false"/> 这段代码正确地获取了数据,但现在我需要有条件地获取数据,

目前,我正在使用hbm文件中的多对一元素从数据库中获取数据对象,如下所示

<property name="ContactId" length="4" />
<many-to-one
    name="DefaultContact"
    column="ContactId"
    class="Models.Contact"
    update="false"
    insert="false"/>

这段代码正确地获取了数据,但现在我需要有条件地获取数据,就像我在hbm文件中有以下属性和mant到一个元素一样

<property name="ParentId" length="4" />
<property name="ParentType" length="4" />
<many-to-one
        name="ContactParent"
        column="???????? ParentId which could be CustomerId or ProspectId or LeadId according to Parent Type ????????"
        class="???????? Models.Customer or Models.Prospect or Models.Lead - according to Parent Type ????????"
        update="false"
        insert="false"/>

我必须根据“父类型”属性中的值获取数据,这意味着我需要根据“父类型”动态设置“多对一”元素的类属性 财产

那么现在,我如何通过多对一元素或其他方式实现所需的结果…?


提前谢谢。

我可以想出两种方法来处理这个问题

  • 不要在模型中包含ContactParent,请使用单独的方法从ParentType和ParentId检索它

  • 将所有三个父类型映射为私有成员,并返回公共属性中不为null的父类型


  • 选项1将是我的第一选择。

    我可以想出两种方法来处理这个问题

  • 不要在模型中包含ContactParent,请使用单独的方法从ParentType和ParentId检索它

  • 将所有三个父类型映射为私有成员,并返回公共属性中不为null的父类型


  • 选项1将是我的首选。

    您应该查看


    它与NHibernate提供的功能最接近。

    您应该查看

    它与NHibernate提供的功能最接近