Универсальный компонент NHibernate - PullRequest
1 голос
/ 12 февраля 2009

Как создать общее сопоставление компонентов в NHibernate, у меня есть класс Pair {virtual T First {get; set}, virtual T Second {get; set;}}, я пытаюсь сопоставить его с чем-то вроде этого, которое не работает

Ответы [ 2 ]

1 голос
/ 13 февраля 2009

Это сработало, дело в том, что мне пришлось использовать `, тогда как я использовал '

0 голосов
/ 12 февраля 2009

Я думаю, что вы можете отобразить класс, но вы в отображении должны явно объявить, какой тип будет использоваться в качестве универсального параметра, например:

    <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>

И если вы хотите использовать тот же универсальный класс или компонент с другим типом, что и универсальный параметр, вы должны создать другое отображение для этого конкретного случая.

...