簡體   English   中英

刪除帶有外鍵的對象的實體框架錯誤

[英]Entity Framework Error Deleting Objects With Foreign Keys

我需要刪除一個已經創建事件的聯系人,數據保存方式的結構如下

事件表

在此處輸入圖片說明

聯系人表

在此處輸入圖片說明

我有一個名為 EventContacts 的單獨表,用於管理事件和聯系人之間的關系

在此處輸入圖片說明

事件類

public class Events
    {

        [Key]
        public string id { get; set; }
        public string title{ get; set; }
        public string desc{ get; set; }
        public virtual List<Contact> contacts{ get; set; }
    }

聯系人類

public class Contact
    {
        public string ContactId { get; set; }  
        public string name{ get; set; }
        public string email{ get; set; }
    }

我使用此代碼刪除聯系人

using (var db= new DatabaseModel())
{
     Contact contact = db.Contacts.Find(id);
     db.Contact.Remove(contact);
     db.SaveChanges();
}

添加一個事件我用這個

List<Contact> cons = new List<Contact>();
foreach (ComboItem cmb in cbItems)
{
   EventContact evntConts = new EventContact()
   {
      contId = cmb.contId,
      evntId = eventidevntId
      userId = userId,
    };

    cons.Add(evntConts);
}
UserEvent events = new UserEvent()
{
   eventid= this.evntid,
   title= txt_title.Text,
   description = txt_des.Text,
   evcontacts = cons
};



using (var db= new DatabaseModel())
{
   db.Evnts.Add(evnt);
   db.SaveChanges();
}

如果沒有與該用戶一起創建的事件,則此代碼可以正常工作,但是如果我將用戶添加到事件然后刪除該用戶,則這不起作用。 我該如何解決?

如果有外鍵並且您有記錄 - 需要先將其刪除(需要先對 Event-contacts 進行操作),然后嘗試刪除 Contacts。

using (var db= new DatabaseModel())
{
     Contact contact = db.Contacts.Find(id);
     if(contact != null){
     EventContact eventContact = db.EventContacts.Where(x=>x.contactId == 
        contact.Id).ToList();
      foreach(var item in eventVContact){
        db.contact.Remove(item);
        db.SaveChanges();
       }
     }
     if(eventContact?.Any()??true){
      db.Contact.Remove(contact);
      db.SaveChanges();
     }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM