to update a contact you don't need to remove the contact indentifier, just check if the contact already exists and update the facet or create a new one if doesn't.
See the example bellow taken from Sitecore Documentation
public void ExampleSync()
{
using (Sitecore.XConnect.Client.XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient())
{
try
{
// Retrieve contact
Sitecore.XConnect.Contact existingContact = client.Get<Sitecore.XConnect.Contact>(new IdentifiedContactReference("twitter", "myrtlesitecore"), new Sitecore.XConnect.ContactExpandOptions(EmailAddressList.DefaultFacetKey));
if (existingContact != null)
{
// Retrieve facet by name
var facet = existingContact.GetFacet<EmailAddressList>(EmailAddressList.DefaultFacetKey);
if (facet != null)
{
// Change facet properties
facet.PreferredEmail = new EmailAddress("[email protected]", true);
facet.PreferredKey = "Work";
// Set the updated facet
client.SetFacet(existingContact, EmailAddressList.DefaultFacetKey, facet);
}
else
{
// Facet is new
EmailAddressList emails = new EmailAddressList(new EmailAddress("[email protected]", true), "Work");
client.SetFacet<EmailAddressList>(existingContact, EmailAddressList.DefaultFacetKey, emails);
}
client.Submit();
}
}
catch (XdbExecutionException ex)
{
// Handle exception
}
}
}