Странное поведение EF при удалени объектов.
От: Аноним  
Дата: 14.10.09 19:43
Оценка:
Удаляю объект при помощи DeleteObject. Но объект этот удалять нельзя, так как на него ссылается другой объект. То есть объект не должен быть удален по ForeignKey-ю. Если пытаюсь удалиить соответствующую строку в базе, то так и получается, то вываливается сообщение что объект нельзя удалить. Но вот когда удаляю в EF, то объект удаляется на ура, а ссылка в другом объекте, который на него ссылался просто обнуляется.
Почему такое может происходить и как это пофиксить?
Re: Странное поведение EF при удалени объектов.
От: G0ga  
Дата: 14.10.09 20:18
Оценка:
Здравствуйте, Аноним, Вы писали:

А> Удаляю объект при помощи DeleteObject. Но объект этот удалять нельзя, так как на него ссылается другой объект. То есть объект не должен быть удален по ForeignKey-ю. Если пытаюсь удалиить соответствующую строку в базе, то так и получается, то вываливается сообщение что объект нельзя удалить. Но вот когда удаляю в EF, то объект удаляется на ура, а ссылка в другом объекте, который на него ссылался просто обнуляется.

А> Почему такое может происходить и как это пофиксить?

Если поясните завязку DeleteObject, EF и базу. Может подскажу.
А так одно предположение неправильно настроена база.
Re: Странное поведение EF при удалени объектов.
От: sto Украина http://overstore.codeplex.com
Дата: 15.10.09 20:06
Оценка:
Здравствуйте, Аноним, Вы писали:

А> Удаляю объект при помощи DeleteObject. Но объект этот удалять нельзя, так как на него ссылается другой объект. То есть объект не должен быть удален по ForeignKey-ю. Если пытаюсь удалиить соответствующую строку в базе, то так и получается, то вываливается сообщение что объект нельзя удалить. Но вот когда удаляю в EF, то объект удаляется на ура, а ссылка в другом объекте, который на него ссылался просто обнуляется.

А> Почему такое может происходить и как это пофиксить?

Возможно контекст при удалении объекта обрабатывает ссылки — в вашем случае выставляет их в нулл. Посмотрите в свойствах ассоциации — может быть, там есть настройка поведения при удалении.
There is no such thing as the perfect design.
Re: Странное поведение EF при удалени объектов.
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 16.10.09 05:39
Оценка:
Здравствуйте, Аноним, Вы писали:

А> Удаляю объект при помощи DeleteObject. Но объект этот удалять нельзя, так как на него ссылается другой объект. То есть объект не должен быть удален по ForeignKey-ю. Если пытаюсь удалиить соответствующую строку в базе, то так и получается, то вываливается сообщение что объект нельзя удалить. Но вот когда удаляю в EF, то объект удаляется на ура, а ссылка в другом объекте, который на него ссылался просто обнуляется.

А> Почему такое может происходить и как это пофиксить?

Никак, констрейнты (в том числе, которые EF поддерживает) проверяются при SaveChanges.
Re[2]: Странное поведение EF при удалени объектов.
От: Аноним  
Дата: 17.10.09 15:43
Оценка:
Здравствуйте, G0ga, Вы писали:

G>Здравствуйте, Аноним, Вы писали:


А>> Удаляю объект при помощи DeleteObject. Но объект этот удалять нельзя, так как на него ссылается другой объект. То есть объект не должен быть удален по ForeignKey-ю. Если пытаюсь удалиить соответствующую строку в базе, то так и получается, то вываливается сообщение что объект нельзя удалить. Но вот когда удаляю в EF, то объект удаляется на ура, а ссылка в другом объекте, который на него ссылался просто обнуляется.

А>> Почему такое может происходить и как это пофиксить?

G>Если поясните завязку DeleteObject, EF и базу. Может подскажу.

G>А так одно предположение неправильно настроена база.

А что теоретически в базе может быть настроено неправильно?
Фишка в том, что эту же базу и схему я использовал в другом приложении, и все отрабатывало как надо. Если есть ссылка на удаляемый объект, то выкидывалось исключение просто. А в этом проекте почему-то объект удаляется сразу. DeleteObject так и использую, просто вызываю. После вызываю SaveChanges().

Версия, что перед удалением объекта удаляются все ссылки на него на мой взгляд самая жизненная, но почему такое может происходить — не понятно
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.