Erro: Ocorreu uma violação de restrição de integridade referencial em db.SaveChanges () em .net?

Eu criei um aplicativo WPF comEntity framework 4.0. Quando estou tentando inserir um registro emPhoneNumber Tabela insere primeiro registro com sucesso. Mas, quando eu loop através de alguma lista e tentar inserir outro item emPhoneNumber table it Insira o registro mas mostre erro como:

InvalidOperationException foi manipulado pelo código do usuário: As alterações no banco de dados foram confirmadas com êxito, mas ocorreu um erro ao atualizar o contexto do objeto. O ObjectContext pode estar em um estado inconsistente. Mensagem de exceção interna: Ocorreu uma violação de restrição de integridade referencial: os valores de propriedade que definem as restrições de referência não são consistentes entre os objetos principal e dependente no relacionamento.

Código no arquivo .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();
                    }
                }
            }
}

Obtendo erro depois de inserir o segundo registro emPhoneNumber mesa. Qualquer ideia?

Estrutura da tabela:

Ajuda Apreciado!

questionAnswers(1)

yourAnswerToTheQuestion