Fluent NHibernate - 将引用键列设置为null

时间:2010-04-20 14:14:15

标签: nhibernate fluent-nhibernate reference foreign-keys

我有一份约会表和一份AppointmentOutcomes表。在我的Appointments表上,我有一个OutcomeID字段,它有一个AppointmentOutcomes的外键。我的Fluent NHibernate映射看起来如下;

        Table("Appointments");
        Not.LazyLoad();
        Id(c => c.ID).GeneratedBy.Assigned();
        Map(c => c.Subject);
        Map(c => c.StartTime);
        References(c => c.Outcome, "OutcomeID");


        Table("AppointmentOutcomes");
        Not.LazyLoad();
        Id(c => c.ID).GeneratedBy.Assigned();
        Map(c => c.Description);

使用NHibernate,如果我删除了AppointmentOutcome,则抛出异常,因为外键无效。我想要发生的是删除AppointmentOutcome会自动将引用AppointmentOutcome的任何约会的OutcomeID设置为NULL。

这可以使用Fluent NHibernate吗?

1 个答案:

答案 0 :(得分:0)

删除结果时,您需要在约会对象上将结果引用设置为null。

using (var txn = session.BeginTransaction())
{
    myAppointment.Outcome = null;
    session.Delete(outcome);
    txn.Commit();
}

您将关系映射为一对多结果预约(一个结果可以链接到多个约会)。如果结果可以链接到多个约会,那么在删除结果之前,您需要在所有这些约会上取消引用结果(或设置级联删除)。