Как я могу создать отношение m: n, не используя первичный ключ в NHibernate? - PullRequest
1 голос
/ 22 декабря 2011

Предполагая, что у меня были следующие таблицы:

Diagram of 3 tables: Publishers and Articles connected by a reference table named PublisherArticles

Если я теперь установлю отношение «многие ко многим» в NHibernate, атрибут <key column />, приведенный ниже, отобразит PublisherArticles.VersionIndependentArticleId в столбце первичного ключа класса статьи (Id) вместо VersionIndependentId.

<class name="Article" table="Articles">
    <id name="Id" />
    <property name="VersionIndependentId" not-null="true" />
    <property name="Version" not-null="true" />
    <property name="Text" not-null="true" />

    <set name="Publishers" table="PublisherArticles">
        <key column="VersionIndependentArticleId" />
        <many-to-many class="Publisher" column="PublisherId" />
    </set>
</class>

Есть ли способ нацеливаться на столбец Articles.VersionIndependentId?

1 Ответ

0 голосов
/ 24 декабря 2011

Это можно сделать с помощью свойства foreign-key.

Однако модель, показанная в моем вопросе, не работает с NHibernate (на самом деле это отношение multi-m: n: сторона m отношенияэто не уникальная запись, а ключ, разделяемый несколькими записями).

Я не уверен, что это плохая нормализация, просто ограничение моего ORM или что-то еще.

...