Quello che stai cercando è una SqlException, in particolare la violazione dei vincoli della chiave primaria. È possibile ottenere questo errore specifico da questa eccezione esaminando la proprietà number dell'eccezione generata. Questa risposta è probabilmente rilevante per ciò di cui hai bisogno:come identificare la duplicazione della chiave primaria da un codice di errore di SQL Server 2008?
In sintesi, si presenta così:
// put this block in your loop
try
{
// do your insert
}
catch(SqlException ex)
{
// the exception alone won't tell you why it failed...
if(ex.Number == 2627) // <-- but this will
{
//Violation of primary key. Handle Exception
}
}
MODIFICA:
Questo potrebbe essere un po 'complicato, ma potresti anche semplicemente ispezionare il componente del messaggio dell'eccezione. Qualcosa del genere:
if (ex.Message.Contains("UniqueConstraint")) // do stuff