NHibernate属成分

NHibernate属成分,nhibernate,nhibernate-mapping,Nhibernate,Nhibernate Mapping,如何在NHibernate中创建泛型组件映射,我有一个类对{virtual T First{get;set},virtual T Second{get;set;},我试图用类似这样的东西映射它,但它不起作用 我认为您可以映射该类,但在映射中必须明确声明将使用哪种类型作为泛型参数,如下所示: <class name="GenericClass`1[ConcreteType], assembly" table="table"> <id n

如何在NHibernate中创建泛型组件映射,我有一个类对{virtual T First{get;set},virtual T Second{get;set;},我试图用类似这样的东西映射它,但它不起作用


我认为您可以映射该类,但在映射中必须明确声明将使用哪种类型作为泛型参数,如下所示:

    <class name="GenericClass`1[ConcreteType], assembly"
         table="table">
        <id name="Id">
            <generator class="identity"/>
        </id>
    </class>

在你的情况下,我想会是:

    <class name="Pair`1[Namespace.TheClass], assembly"
         table="table">
        <id name="Id">
            <generator class="identity"/>
        </id>
    <many-to-one name="First" class="Namespace.TheClass, assembly"/>
    </class>

作为一个组成部分:

<component name="Property" class="Pair`1[Namespace.TheClass], assembly">
    <many-to-one name="First" class="Namespace.TheClass, assembly"/>
</component>


如果您想使用同一个泛型类或具有其他类型的组件作为泛型参数,则必须为该特定情况创建另一个映射。

我认为您可以映射该类,但您必须在映射中明确声明将使用哪种类型作为泛型参数,如下所示:

    <class name="GenericClass`1[ConcreteType], assembly"
         table="table">
        <id name="Id">
            <generator class="identity"/>
        </id>
    </class>

在你的情况下,我想会是:

    <class name="Pair`1[Namespace.TheClass], assembly"
         table="table">
        <id name="Id">
            <generator class="identity"/>
        </id>
    <many-to-one name="First" class="Namespace.TheClass, assembly"/>
    </class>

作为一个组成部分:

<component name="Property" class="Pair`1[Namespace.TheClass], assembly">
    <many-to-one name="First" class="Namespace.TheClass, assembly"/>
</component>


如果你想使用同一个泛型类,或者具有另一种类型的组件作为泛型参数,你必须为特定的情况创建另一个映射。

成功了,诀窍是我必须使用`,而我使用的是'

成功了,诀窍是我必须使用`,而我使用的是'