我有一个一对一的映射,我试图用 Fluent NHibernate 映射来表达它。我知道网上有很多类似的问题/答案,但几个小时后,我很难找到具体问题的答案。
我有一个Member
和Subscription
对象。一个成员可以有 0..1 个订阅,一个订阅实例只能属于一个成员。
这是我的课程:
public class Member
{
public Subscription Subscription { get; set; }
}
public class Subscription
{
public Member Member { get; set; }
public DateTime StartDate { get; set; }
public DateTime FinishDate { get; set; }
}
这是我的映射(流利):
对于会员:
mapping.HasOne(member => member.Subscription)
.PropertyRef(subscription => subscription.Member).Cascade.SaveOrUpdate();
对于订阅:
mapping.References(subscription => subscription.Member)
.Unique().Cascade.None();
有一些要求,但我似乎无法满足所有要求:
- 即节省
Member
级联到Subscription
. - 删除 a
Subscription
会破坏 上的关联Member
。 - 删除 a
Subscription
不会删除Member
.
如果我将 Cascade 设置Member
为Subscription
已保存,但删除 aSubscription
会引发ObjectDeletedException
.
Subscription
为什么 NHibernate在应用级联之前不能自动删除关联到first Member
?