jos*_*wer 20 nhibernate nhibernate-mapping
我有个问题.想象一下这个数据模型:
[Person] table has: PersonId, Name1
[Tag] table has: TagId, TagDescription
[PersonTag] has: PersonId, TagId, IsActive
Run Code Online (Sandbox Code Playgroud)
由于[PersonTag]不仅仅是一个简单的多对多连接表,我在nHibernate中创建了所有三个实体(就像它们在数据模型中一样).PersonTag因此,需要一个复合ID,我已经映射到这样的类:
<composite-id name="PersonTagKey" class="PersonTagKey">
<key-property name="PersonId"></key-property>
<key-property name="TagId"></key-property>
</composite-id>
Run Code Online (Sandbox Code Playgroud)
我想遍历对象图,并能够从检索到的对象中查看Person和对象.所以,我在对象上有属性来做,像这样映射:TagPersonTagPersonTag
<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"/>
Run Code Online (Sandbox Code Playgroud)
当我尝试创建一个PersonTag对象并保存它时,我得到一个"此SqlParameterCollection的无效索引n,其中Count = n"错误.我知道这是因为我已经映射PersonId和TagId性能两次,一次为复合-ID,并曾经为许多一对一的关系.如果我不映射多对一对象,那么一切正常.
有没有办法让我能够在同一个nHibernate实体中建模的同一列中拥有复合ID和多对一关系?
jos*_*wer 28
凯,这是答案.几乎没有关于此的文档:
<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>
Run Code Online (Sandbox Code Playgroud)
这将允许您创建由多对一关系的倒数组成的复合ID.
好狩猎......
| 归档时间: |
|
| 查看次数: |
18215 次 |
| 最近记录: |