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 :) –

相关问题