Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Violazione del vincolo PRIMARY KEY

Quello che vuoi fare è prima controllare il record esistente e, se non esiste, allora aggiungine uno nuovo. Il tuo codice tenterà sempre di aggiungere un nuovo record. Suppongo che tu stia usando Linq2Sql (basato su InsertOnSubmit )?

public void Subscribe(string clientID, Uri uri)
{
    using(clientsDBDataContext clientDB = new clientsDBDataContext())
    {
        var existingClient = (from c in clientDB.clientURIs
                              where c.clientID == clientID
                              select c).SingleOrDefault();

        if(existingClient == null)
        {
            // This is a new record that needs to be added
            var client = new ServiceFairy.clientURI();
            client.clientID = clientID;
            client.uri = uri.ToString();
            clientDB.clientURIs.InsertOnSubmit(client);
        }
        else
        {
            // This is an existing record that needs to be updated
            existingClient.uri = uri.ToString();
        }
        clientDB.SubmitChanges();
    }
}