Dav*_*ans 3 nhibernate nhibernate-mapping
我的数据库结构如下所示:
Person
Id
Name
FieldA
FieldB
Phone
Id
Number
PersonPhone
PhoneId
PersonId
IsDefault
Run Code Online (Sandbox Code Playgroud)
我对人物和电话对象的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; }
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我对此表的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>
Run Code Online (Sandbox Code Playgroud)
但是当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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8476 次 |
| 最近记录: |