gpt4 book ai didi

nhibernate - nHibernate 2.0-映射复合ID *和*多对一关系会导致 “invalid index”错误

转载 作者:行者123 更新时间:2023-12-03 12:12:33 25 4
gpt4 key购买 nike

我有个问题。想象一下这个数据模型:

[Person] table has: PersonId, Name1  
[Tag] table has: TagId, TagDescription
[PersonTag] has: PersonId, TagId, IsActive

由于 [PersonTag]不仅仅是一个简单的多对多联接表,因此我在nHibernate中创建了所有三个实体(就像它们在数据模型中一样)。因此, PersonTag需要一个复合ID,我已将其映射到这样的类:
<composite-id name="PersonTagKey" class="PersonTagKey">
<key-property name="PersonId"></key-property>
<key-property name="TagId"></key-property>
</composite-id>

我想遍历对象图,并能够从检索到的 Person对象中查看 TagPersonTag对象。因此,我在 PersonTag对象上具有执行此操作的属性,如下所示:
<many-to-one name="Person" column="PersonId" lazy="proxy" cascade="none" class="Person"/>
<many-to-one name="Tag" column="TagId" lazy="proxy" cascade="none" class="Tag"/>

当我尝试创建 PersonTag对象并将其保存时,出现“此SqlParameterCollection的无效索引n,计数为n”的错误。我知道这是因为我已经映射了 PersonIdTagId属性两次,一次映射为复合ID,一次映射为多对一关系。如果我不映射多对一对象,则一切正常。

我有什么办法可以基于在同一nHibernate实体中建模的同一列来具有复合ID和多对一关系?

最佳答案

凯,这就是答案。几乎没有相关文档:

<composite-id name="PersonTagKey" class="PersonTagKey"> 
<key-many-to-one name="Person" column="PersonId" lazy="proxy" class="Person">
<key-many-to-one name="Tag" column="TagId" lazy="proxy" class="Tag"/>
</composite-id>

这将允许您创建由多对一关系的逆组成的复合ID。

打猎好...

关于nhibernate - nHibernate 2.0-映射复合ID *和*多对一关系会导致 “invalid index”错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/497548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com