如何在 NHibernate 中创建不使用主键的 m:n 关系?
假设我有以下表格:
如果我现在设置在 NHibernate 中建立多对多关系,下面的
属性将映射将 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
列?
Assuming I had the following tables:
If I now set up a many-to-many relationship in NHibernate, the <key column />
attribute below will map the PublisherArticles.VersionIndependentArticleId
to the primary key column of the article class (Id
) instead of 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>
Is there any way to target the Articles.VersionIndependentId
column instead?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这可以使用
foreign-key
属性来完成。但是,我的问题中显示的模型不适用于 NHibernate(它实际上是多 m:n 关系:关系的 m 方不是唯一记录,而是由多个记录共享的密钥)。
我不确定这是否是不好的标准化,只是我的 ORM 的限制还是其他什么。
This can be done using the
foreign-key
property.However, the model shown in my question does not work with NHibernate (it's actually a multi-m:n relationship: the m side of the relationship is not a unique record but a key shared by multiple records).
I'm not sure if this is bad normalization, just a limitation of my ORM or something else.