Ich verwende LINQ2SQL und ich habe eine TabelleLINQ to SQL DuplicateKeyException Problem
CustmerID, CustomerCode, Kundenname
CustmerID ist Primery Key (und Identität = yes) und CustomerCode Kunden mit drei Spalten hat gerade angerufen wird UniqueKey .
Wenn ich diese Tabelle mithilfe von LINQ to SQL mit doppeltem Kundencode aktualisiere, erwarte ich, dass DuplicateKeyException angezeigt wird, aber es wird in den allgemeinen Ausnahmeblock statt in den DuplicateKeyException-Block aufgenommen. Irgendwelche Ideen?
Dies ist der Code
public void Update (Kunde Kd) { mit (LINQDemoDataContext db = new LINQDemoDataContext()) { Kunden entity = CustomerMapper.ToEntity (neue Kunden,(), cust);
try
{
db.Customers.Attach(entity, true);
db.SubmitChanges();
}
//Concurrency Exception
catch (ChangeConflictException)
{
throw new ChangeConflictException("A concurrency error occurred!");
}
//duplicate record
catch (DuplicateKeyException)
{
throw new DuplicateKeyException(entity.CustmerCode);
}
//everything else
catch (Exception ex)
{
throw ex;
}
}
}
Ich verwende VisualWebDeveloperExpress 2008 und SQL Express 2005
Dank & Grüße, Supremestar
Wenn ich Exceptions wie diese ausspreche, würde ich die ursprüngliche Ausnahme als 'InnerException' (verwenden Sie einen anderen Konstruktor) verwenden. Anstatt "ex" zu werfen, verwenden Sie einfach "throw;". –
Oder, einfach nicht die letzte Ausnahme abfangen, wenn Sie nicht damit umgehen. –
Danke für den Tipp. Aber was ist mit der DuplicateKeyException? Was ist damit? catch (SqlException sqlExc) { foreach (SqlError Fehler in sqlExc.Errors) { if (error.Number == 2601) { throw new Exception ("kann der Kunde Datensatz nicht aktualisieren, CustomerCode muss eindeutig sein "); } sonst { werfen; } } – Supremestar