Ich bin neu in C# .NET. Ich habe seit 2 Tagen versucht, aber ich konnte nicht erfolgreich sein.
Ich habe Windows-Anwendung erstellt. Ich habe Tabelle, die zwei einzigartige Spalten E-Mail, Telefon hat.
Ich möchte den Spaltennamen finden, der die Eindeutigkeit der Ausnahme für die Schlüsseleinschränkung zum Zeitpunkt der Einfügung des Datensatzes auslöst. Ich habe versucht,
var ex = new SqlException();
ex.Data["Mesg"] = "Exception in Email";
throw ex;
Aber es führt zu Fehler „System.Data.SqlClient.SqlException‘ hat keine Konstruktoren definiert“
Ist es möglich? Hilf mir.Wie finde ich heraus, welche Spalte eine eindeutige Schlüsselbedingungsausnahme auslöst, wenn mehr als eine eindeutige Schlüsselspalte in der Tabelle vorhanden ist?
2
A
Antwort
2
Sie möchten diese Informationen erhalten, nicht produzieren. So verwenden Sie das folgende Konstrukt:
try
{
... (access the database here) ...
}
catch (SqlException e)
{
... (look at e.Message)
}
Mein Rat wäre, das eingehende Modell zu validieren, und hängen nicht von der Datenbank zu werfen einen Fehler zurück. Dann weißt du vorne, bevor du dich verbindest und musst keine Zeit verschwenden, mit der DB zu reden. Jetzt können Sie eine einfache 'ArgumentException' im Voraus auslösen und wissen genau, was das Problem ist, da Sie gerade die Validierung durchgeführt haben. – asawyer
Sie sollten sich darüber im Klaren sein, dass die Daten, die Sie einfügen/aktualisieren möchten, möglicherweise gegen * multiple * Einschränkungen verstoßen und Sie nur Informationen über einen Verstoß erhalten (der eine ist unbestimmt). –
Danke @ asawyer, @ Damien_The_Unbeliever. –