【发布时间】:2014-06-15 22:25:16
【问题描述】:
我有以下两个类:
public class Project
{
public virtual int ProjectId { get; set; }
public virtual string ProjectName { get; set; }
public virtual LegalEntity LegalEntity { get; set; }
}
和
public class LegalEntity
{
public virtual int LegalEntId { get; set; }
public virtual string Name { get; set; }
}
映射为:
<class name="Project" table="Project" dynamic-update="true">
<id name="ProjectId">
<generator class="native"/>
</id>
<property name="ProjectName" />
<many-to-one name="LegalEntity" column="LegalEntId" fetch="join" cascade="all-delete-orphan" />
</class>
和
<class name="LegalEntity" table="LegalEnt" dynamic-update="true">
<id name="LegalEntId">
<generator class="native"/>
</id>
<property name="Name" />
</class>
在数据库中,Project 表对 LegalEntity 的 PK 列有一个 FK。一个项目将只有一个法人实体。不同的项目可以有相同的法人实体。所以这就是我选择多对一的原因。不过不确定这是否正确。
插入和更新工作正常。但是,如果我在项目中更新了法人实体 ID,并且该法人实体成为孤儿,我希望将其删除。但它没有发生。我对 delete-all-orphan 的理解错了吗?如果是,我该如何实现这种行为?
【问题讨论】:
标签: nhibernate many-to-many one-to-many one-to-one