Невозможно удалить в EF4 - PullRequest
2 голосов
/ 23 июля 2010

Я пытаюсь удалить «AttendeeEvent» из базы данных с EF4, однако получаю следующую ошибку: -

Операция не выполнена: отношение не может быть изменено, поскольку один или несколько внешних-Клавиш свойства не обнуляется.Когда в отношение вносится изменение, для соответствующего свойства внешнего ключа устанавливается нулевое значение.Если внешний ключ не поддерживает нулевые значения, необходимо определить новое отношение, свойству внешнего ключа должно быть назначено другое ненулевое значение или несвязанный объект должен быть удален.

Мой код такойследует: -

        public void UnRegisterCurrentUserForEvent(int eventId)
    {
        Attendee attendee = GetOrCreateAttendeeForCurrentUser();
        AttendeeEvent av = attendee.AttendeeEvents.SingleOrDefault(x => x.EventID == eventId);

        if(av != null)
        {
            attendee.AttendeeEvents.Remove(av);
        }

        this.ObjectContext.SaveChanges();
    }

Я пытался изменить End 2 On Delete из свойств в .edmx, однако, когда я установил каскад, я получаю сообщение об ошибке: -

Ошибка 1Ошибка 132: невозможно указать операцию, так как ее кратность равна «».Операции нельзя указывать на концах с кратностью ''

Можете ли вы, ребята, помочь мне

Спасибо за вашу помощь и время

1 Ответ

2 голосов
/ 23 июля 2010

Вы удаляете AttendeeEvent из коллекции событий участников только для Attendee.Предположим, у вас есть участник A и событие AV, и вы удаляете AV из A.Что должно происходить внутри базы данных?Вы на самом деле не удалили AV.Вы только сказали, что A больше не должно быть связано с AV.Поэтому внутри вашей базы данных внешний ключ от AV до A имеет значение NULL, что недопустимо для вашей модели базы данных.

Исправление простое: замените строку, из которой вы удаляете событие, изучастник со следующей строкой:

this.ObjectContext.AttendeeEvents.DeleteObject(av);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...