2010-07-23 5 views
2

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

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

Мой код выглядит следующим образом: -

 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(); 
    } 

Я попытался изменить Конец 2 На Удалить из свойств в EDMX-однако, когда я устанавливаю в каскаде, я получаю сообщение об ошибке: -

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

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

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

+0

У вас есть каскад в БД? У вас было это, когда вы создали свою модель? Похоже, вы должны. –

ответ

2

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

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

this.ObjectContext.AttendeeEvents.DeleteObject(av); 
+0

круто спасибо, что сработало! Большое спасибо – Johann

Смежные вопросы