gpt4 book ai didi

NHibernate Map 多对多连接表

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

我的数据库结构如下所示:

Person
Id
Name
FieldA
FieldB

Phone
Id
Number

PersonPhone
PhoneId
PersonId
IsDefault

我对 Person 和 Phone 对象的 NHibernate 映射是直截了当的,它是我遇到的困难的 PersonPhone。我想拥有一个 PersonPhone 对象的集合作为 Person 的属性,这将允许我拥有一个人的电话号码,并能够判断哪个是一个人的“默认”或主要电话号码。

理想情况下,我希望我的 PersonPhone 对象看起来像这样:
public class PersonPhone
{
public virtual Person Person { get; set; }
public virtual Phone Phone { get; set; }
public virtual bool IsDefault { get; set; }
}

到目前为止,我对该表的 NHibernate 映射如下所示:
<class name="PersonPhone" table="PersonPhone">
<composite-id>
<key-property name="Person" column="PersonId" />
<key-property name="Phone" column="PhoneId" />
</composite-id>
<property name="IsDefault" column="IsDefault"/>
</class>

但是当 NHibernate 编译我的映射时,我收到一条错误消息:

无法编译映射文档:MyApp.Entities.PersonPhone.hbm.xml。 NHibernate.MappingException:无法确定类型:MyApp.Entities.Person、MyApp.Entities、Version=1.0.0.0、Culture=neutral、PublicKeyToken=null,对于列:NHibernate.Mapping.Column(PersonId)

关于这应该如何映射的任何想法?

最佳答案

答案是使用复合键中的元素而不是键属性

<class name="PersonPhone" table="PersonPhone">
<composite-id>
<key-many-to-one name="Person" column="PersonId"></key-many-to-one>
<key-many-to-one name="Phone" column="PhoneId"></key-many-to-one>
</composite-id>
<property name="IsDefault" column="IsDefault"/>
</class>

关于NHibernate Map 多对多连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/881865/

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