| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Базы данных под .NET > Удаление записи через Entity Framework |
| Автор: cha0ss 8.10.2009, 16:04 | ||||
| Здравствуйте, у меня есть структура из 3 таблиц: таблица заказчик c 2 связями: 1 к таблице Физ.лицо, 2 к таблице Юр.лицо Столкнулся сразу с несколькими проблемами: 1. Делаю выборку 1 заказчика (выбираю по ID). Получаю объект ЗАКАЗЧИК, но поля FizLico и UrLico у него NULL. Почему? Код:
т.е c.FizLico = null, хотя в базе есть Физ.лицо, присоединенное к заказчику. 2. Пытаюсь удалить FizLico по ID
Вылетает следующая ошибка: {"The DELETE statement conflicted with the REFERENCE constraint \"FK_zakazhik_FizLico\". The conflict occurred in database \"db1\", table \"dbo.zakazhik\", column 'FizLico'.\r\nThe statement has been terminated."} Entity Framework разве не может удалить FizLico, если на текущую запись есть ссылка с таблицы zakazhik. Разве он не должен автоматом изменить zakazhik.FizLico на null? |
| Автор: cha0ss 9.10.2009, 14:57 | ||
| Нашел некоторое решение второй проблемы: Сначала выбрал заказчика и присвоил св-ву FizLico null, после удаляю Физ.Лицо из базы. Получается нечто вроде этого:
Но вопрос собственно остается, разве Entity Framework не может следить за связями самостоятельно? |
| Автор: cha0ss 12.10.2009, 08:14 |
| Неужели никто не стакливался с данной проблемой, или так мало поклонников Entity Framework? |
| Автор: cha0ss 13.10.2009, 09:36 | ||||
| Вообщем наткнулся на то, что каким образом будет удаляться запись / записи зависит не от Entity Framework, а от свойств связи в самой SQL. Вот выдержка из статьи с МСДН'а (http://msdn.microsoft.com/ru-ru/library/ms188066(SQL.90).aspx)
По первому пункту, где не выдирались дочерние объекты. Собственно я и не писал в запросе, чтобы они выдирались. Ниже пример, который выдирает как свойства заказчика, так и физического лица, который находится под ним
P.S Если кто откопает как можно сделать лучше, пишите буду рад любым соображениям. |