Удаляю объект при помощи DeleteObject. Но объект этот удалять нельзя, так как на него ссылается другой объект. То есть объект не должен быть удален по ForeignKey-ю. Если пытаюсь удалиить соответствующую строку в базе, то так и получается, то вываливается сообщение что объект нельзя удалить. Но вот когда удаляю в EF, то объект удаляется на ура, а ссылка в другом объекте, который на него ссылался просто обнуляется.
Почему такое может происходить и как это пофиксить?
Здравствуйте, Аноним, Вы писали:
А> Удаляю объект при помощи DeleteObject. Но объект этот удалять нельзя, так как на него ссылается другой объект. То есть объект не должен быть удален по ForeignKey-ю. Если пытаюсь удалиить соответствующую строку в базе, то так и получается, то вываливается сообщение что объект нельзя удалить. Но вот когда удаляю в EF, то объект удаляется на ура, а ссылка в другом объекте, который на него ссылался просто обнуляется. А> Почему такое может происходить и как это пофиксить?
Если поясните завязку DeleteObject, EF и базу. Может подскажу.
А так одно предположение неправильно настроена база.
Здравствуйте, Аноним, Вы писали:
А> Удаляю объект при помощи DeleteObject. Но объект этот удалять нельзя, так как на него ссылается другой объект. То есть объект не должен быть удален по ForeignKey-ю. Если пытаюсь удалиить соответствующую строку в базе, то так и получается, то вываливается сообщение что объект нельзя удалить. Но вот когда удаляю в EF, то объект удаляется на ура, а ссылка в другом объекте, который на него ссылался просто обнуляется. А> Почему такое может происходить и как это пофиксить?
Возможно контекст при удалении объекта обрабатывает ссылки — в вашем случае выставляет их в нулл. Посмотрите в свойствах ассоциации — может быть, там есть настройка поведения при удалении.
Здравствуйте, Аноним, Вы писали:
А> Удаляю объект при помощи DeleteObject. Но объект этот удалять нельзя, так как на него ссылается другой объект. То есть объект не должен быть удален по ForeignKey-ю. Если пытаюсь удалиить соответствующую строку в базе, то так и получается, то вываливается сообщение что объект нельзя удалить. Но вот когда удаляю в EF, то объект удаляется на ура, а ссылка в другом объекте, который на него ссылался просто обнуляется. А> Почему такое может происходить и как это пофиксить?
Никак, констрейнты (в том числе, которые EF поддерживает) проверяются при SaveChanges.
Re[2]: Странное поведение EF при удалени объектов.
От:
Аноним
Дата:
17.10.09 15:43
Оценка:
Здравствуйте, G0ga, Вы писали:
G>Здравствуйте, Аноним, Вы писали:
А>> Удаляю объект при помощи DeleteObject. Но объект этот удалять нельзя, так как на него ссылается другой объект. То есть объект не должен быть удален по ForeignKey-ю. Если пытаюсь удалиить соответствующую строку в базе, то так и получается, то вываливается сообщение что объект нельзя удалить. Но вот когда удаляю в EF, то объект удаляется на ура, а ссылка в другом объекте, который на него ссылался просто обнуляется. А>> Почему такое может происходить и как это пофиксить?
G>Если поясните завязку DeleteObject, EF и базу. Может подскажу. G>А так одно предположение неправильно настроена база.
А что теоретически в базе может быть настроено неправильно?
Фишка в том, что эту же базу и схему я использовал в другом приложении, и все отрабатывало как надо. Если есть ссылка на удаляемый объект, то выкидывалось исключение просто. А в этом проекте почему-то объект удаляется сразу. DeleteObject так и использую, просто вызываю. После вызываю SaveChanges().
Версия, что перед удалением объекта удаляются все ссылки на него на мой взгляд самая жизненная, но почему такое может происходить — не понятно