Fluent NHibernate - установить столбцы ссылочных ключей на ноль - PullRequest
3 голосов
/ 20 апреля 2010

У меня есть таблица Назначений и таблица AppointmentOutcomes. В моей таблице назначений у меня есть поле OutcomeID, которое имеет внешний ключ для AppointmentOutcomes. Мои беглые отображения 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 автоматически установило бы OutcomeID всех назначений, которые ссылаются на AppointmentOutcome, на NULL.

Возможно ли это с помощью Fluent NHibernate?

1 Ответ

0 голосов
/ 20 апреля 2010

Вам необходимо установить нулевую ссылку на Исход для объекта Назначения при удалении Исхода.

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

У вас есть отношение, сопоставленное как результат от одного к многим (один результатможет быть связан с несколькими встречами).Если Результат может быть связан с несколькими встречами, то перед удалением Результата вам потребуется отменить ссылку на Результат (или установить каскадное удаление).

...