Как удалить объект, на который есть ссылка, с помощью FluentNHibernate (например, «удаленный объект будет восстановлен каскадом») - PullRequest
1 голос
/ 28 сентября 2011

Ошибка, которую я получаю, является обычной, но в сценарии я не нашел ответов, которые бы соответствовали моему сценарию:

Объекты:

Учащийся школьного учителя

Отображения:

School:  mapping.HasMany(x => x.Students).Cascade.AllDeleteOrphan();
Student: 
      mapping.References(x => x.Teacher).Not.Nullable().Cascade.SaveUpdate();
      mapping.References(x => x.School).Not.Nullable().Cascade.SaveUpdate();
Teacher: 
      mapping.References(x => x.School).Not.Nullable().Cascade.SaveUpdate();
      mapping.HasMany(x => x.Students).Cascade.All().Inverse();

Сценарий: ученик связан со школой, в которой нет других учеников или учителей.Если я хочу связать ученика с другой школой, я бы хотел удалить школу-сироту.

if (oldSchool.Students.Count == 1 && oldSchool.Teachers.Count == 0)
{
    //delete it
    //oldSchool.Students.Remove(student);
    student.School = null;

    _schoolRepository.Delete(oldSchool);
}

Что происходит здесь, так это то, что, когда я сохраняю «студент», я получаю страшный «удаленный объект, который будет спасен ошибкой каскада».

Как всегда, любая помощьс благодарностью.

1 Ответ

0 голосов
/ 29 сентября 2011

Как выглядят остальные ваши сопоставления? Каково обратное положение между школой и учеником?

Попробуйте mapping.HasMany(x => x.Students).Cascade.AllDeleteOrphan().Inverse().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...