2

我創建了一個帶有Entity framework 4.0.的WPF應用程序當我試圖在PhoneNumber表中插入記錄時,它成功插入第一條記錄。但是,當我環路通過一些名單,並嘗試插入另一項目爲PhoneNumber表它插入記錄,但顯示錯誤爲:錯誤:.net中的db.SaveChanges()發生了參照完整性約束衝突?

InvalidOperationException異常是由用戶代碼處理: 到數據庫的更改被成功提交,但一更新對象上下文時發生錯誤。 ObjectContext可能處於不一致的狀態。內部異常消息:發生參照完整性約束衝突:定義參照約束的屬性值在關係中的主體和從屬對象之間不一致。

代碼在cs文件:

protected void InsertContact(List<PhoneNumbersList> phoneList,otherparameters here) 
{ 
      Contact contact = new Contact(); 
      PhoneNumber phnumber = new PhoneNumber(); 

      //INSERT into Contacts Table 
      contact.PrefixTitleID = cfnm.PrefixTitleID;// cfnm.Title; 
      contact.FirstName = cfnm.FirstName; 
      contact.MiddleName = cfnm.MiddleName; 
      contact.LastName = cfnm.LastName; 
      contact.Website = webpageaddress; 
      contact.SuffixID = cfnm.SuffixID; 
      contact.Gender = gender; 
      contact.IMAddress = imaddress; 

      db.Contacts.Add(contact); 
      db.SaveChanges(); 
      int contactid=contact.ContactID; 
      if (contactid > 0) 
      { 
       int phid = 0; 
       //INSERT into PhoneNumber Table 
       foreach (var ph in phoneList) 
       { 

        phnumber.PhoneTypeID = ph.PhoneTypeID; 
        phnumber.CountryID = ph.CountryID; 
        phnumber.City = ph.City; 
        phnumber.LocalNumber = ph.LocalNumber; 
        phnumber.Extension = ph.Extension; 
        phnumber.CountryCode = ph.CountryCode; 
        db.PhoneNumbers.Add(phnumber); 
        db.SaveChanges();//Getting Error here 
        phid=phnumber.ID ; 
        if(phid > 0) 
        { 
         //Save in ContactPhoneNumber Table 
         contactphonenumber.ContactID = contactid; 
         contactphonenumber.PhoneNumberID = phid; 
         db.ContactPhoneNumbers.Add(contactphonenumber); 
         db.SaveChanges(); 
        } 
       } 
      } 
} 

PhoneNumber表中插入第二個記錄後收到錯誤。任何想法?

表結構: enter image description here

幫助感激!

回答

6

您只實例化phnumber一次,然後嘗試將其多次插入到數據庫中。在foreach (var ph in phoneList) 區塊內移動PhoneNumber phnumber = new PhoneNumber();短語。

+1

太棒了!謝謝@Dabblerni :) –

相關問題