Fluent NHibernate Cascade Ошибка удаления - PullRequest
0 голосов
/ 31 марта 2011

Подобные вопросы были заданы, но я не нахожу ответа, так что здесь идет. У меня есть следующие отношения Свободное владение:

HasMany<UserFilter>(x => x.UserProjectFilters)
            .KeyColumns.Add("UserProfileID")
            .Cascade.All()
            .AsSet()
            .Inverse()
            .Cache.ReadWrite();

Когда я пытаюсь удалить родителя (сущность фильтра), удаление не происходит каскадно; Я вижу исключение: «Оператор DELETE конфликтует с ограничением REFERENCE ...». В NH Profiler я вижу, что оператор Delete создается для родителя, но ни один не создается для дочернего элемента. Я ожидал бы, что удаление для любых детей будет выполнено до родителя. Что я делаю не так?

Вот конец отношения UserProfileFilter:

References<Filter>(x => x.Filter)
            .Column("FilterID")
            .LazyLoad()
            .Cascade.SaveUpdate();

Спасибо! Andy

Ответы [ 2 ]

1 голос
/ 31 марта 2011

В результате возникла проблема с несколькими внешними ключами в дочерней таблице, и в отображении использовался неправильный ключ.Я изменил код, приведенный выше, на следующий, и он работал просто отлично:

HasMany<UserFilter>(x => x.UserProjectFilters)
            .KeyColumns.Add("FilterID")
            .Cascade.All()
            .AsSet()
            .Inverse()
            .Cache.ReadWrite();

Спасибо за помощь, Дэвид!

Энди

1 голос
/ 31 марта 2011

Я думаю, вам нужно Cascade.AllDeleteOrphan(), поскольку вы установили отношения как Inverse()

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