2010-07-23 30 views
2

我試圖刪除與EF4數據庫中的「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(); 
    } 

我試圖改變2月底在從的.edmx屬性刪除但是當我設置爲級聯,我得到一個錯誤: -

錯誤1錯誤132:不能指定操作,因爲它的重數是''。操作不能與多樣性「」端指定

你們可以幫我

感謝您的幫助和時間

+0

你有一個數據庫中的級聯?你創建模型時有沒有它?聽起來像你應該。 – 2010-07-23 18:27:17

回答

2

你只去除與會者事件的收集AttendeeEventAttendee 。因此,假設您有與會者A和事件AV,並且您從A刪除AV。數據庫內應該發生什麼?您實際上沒有刪除AV。您只是說A應該不再與AV相關。因此,在數據庫中,從AVA的外鍵被設置爲NULL,這是數據庫模型不允許的。

修復的方法是簡單的:更換你來自哪裏,與會者與以下行刪除事件行:

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

很酷的感謝,工作! 非常感謝 – Johann 2010-07-23 18:45:23