Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Violation de la contrainte PRIMARY KEY

Ce que vous voulez faire, c'est d'abord vérifier l'enregistrement existant, et s'il n'existe pas, alors ajouter un nouveau. Votre code tentera toujours d'ajouter un nouvel enregistrement. Je suppose que vous utilisez Linq2Sql (basé sur le 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();
    }
}