【发布时间】:2013-07-01 01:07:00
【问题描述】:
我想映射一对多对象 Person 和个人地址
public class Person{
public virtual int Id {get; set;} public virtual string FirstName {get; set;}
public virtual ICollection<PersonAddress> PersonAddress { get; set; }}
public class PersonAddress{
public virtual int Id {get; set;}
public virtual int PersonId {get; set;}
... }
我不想在地址中有 person 对象属性。它会创建循环引用,我的应用程序不需要。
映射文件如下:
<class name="Person" table="Persons" >
<id name="Id" type="Int32" column="PersonId">
<generator class="identity"/>
</id>
<set name="PersonAddress" table="PersonAddress" lazy="true" fetch="join" outer-join="true" cascade="all-delete-orphan">
<key column="PersonId"></key>
<one-to-many class="PersonAddress"/>
</set>
</class>
<class name="PersonAddress" table="PersonAddress" >
<id name="Id" type="Int32" column="Id">
<generator class="identity"/>
</id>
<property name="PersonId" column="PersonId" type="Int32"/>
<property name="PhoneWork" column="PhoneWork" type="String"/>
</class>
当尝试使用人员地址插入人员时,我收到异常。因为它试图插入带有无效 id 的 PersonAddress(默认为 -1、0 等)。
在我发现的样本中,指定了从子到父的反向引用
【问题讨论】:
-
听起来类似于我不久前发布的一个问题:stackoverflow.com/questions/1426767。看起来你运气不好,但我希望能得到一个满意的答案!
标签: .net nhibernate