Frage

Ich habe eine Tabelle Benutzer, die eine Unique-Einschränkung auf den Benutzernamen hat (aus offensichtlichen Gründen).

Ich verwende eine EF 4.0 DAL die Datenbank zu füllen, und in dem Prozess die AngelegtVon () Verfahren zur Codierung.

Ist es ...

  1. Best die SqlException geworfen zu fangen, wenn ich versuche, einen Benutzernamen einfügen, die bereits vorhanden sind.
  2. Explizit überprüfen für den Benutzernamen, bevor ich versuche, es in die Datenbank einfügen?

Wenn Sie auch Gründe, warum geben könnten, das wäre toll!

War es hilfreich?

Lösung

Ich würde überprüfen, ob der Datensatz zuerst existiert. Eindeutiger Schlüssel Zwänge sind nützlich zum Schutz gegen mögliche Wege, um Ihre Anwendung „schlechte“ Daten, die durch in erster Linie ist erlaubt, aber nicht die Haupthaltestelle dafür. Es ist generell eine schlechte Idee, Verwendung Ausnahmen als Steuerstrommechanismus (Validierung in diesem Fall), wenn es möglich ist, zu vermeiden.

EDIT: Um Verwirrung zu vermeiden, ich sage nicht, nicht den eindeutigen Index überhaupt haben. Es sollte dort sein, aber es sollte das primäre Mittel zur Überprüfung auf Eindeutigkeit nicht sein.

Andere Tipps

Ich würde sagen, dass es am besten ist es, die Ausnahme zu behandeln. Die Datenbank ist so konzipiert, um die Einzigartigkeit des Benutzernamens zu handhaben, so dass ich es tun es sich vorstellen kann effizienter als Sie können. Auch fügt es Portabilität und Zusammenhalt zu Ihrem System. Wenn Sie Benutzer in mehr als einem Ort hinzufügen, müssen Sie den Benutzernamen Prüfung duplizieren oder eine Methode erstellen und im Grunde werden Sie am Ende umgeschrieben, was die Datenbank-Engine bereits geschrieben hat.

Zusätzlich zu dem, was Samuel gesagt, würden Sie brauchen, um sicherzustellen, dass niemand einen Datensatz eingibt, der mit Ihnen zwischen Ihrem Scheck und dem Hinzufügen des Datensatz in die Datenbank in Konflikt geraten könnte. Man könnte dies mit einem Schloss erreichen, aber dann haben Sie zu fangen Ausnahmen von der Sperre verursacht habe.

Als Sachen in den Geschäftsregeln für die Vervielfältigung und der Datenbank, bin ich für die Datenbank Habing so viel consitency Überprüfung an Ort und Stelle, wie erforderlich ist, auch wenn dies einige Sachen dupliziert in der Business-Schicht. Je mehr fest verschlossen Datenbank ist gegen ungültige Daten desto besser. Es schützt Sie vor dem Zugriff auf die Datenbank über andere Werkzeuge als App, wie eine Unterstützung Kerl Änderungen in der Datenbank zu machen SSMS mit einem Datenproblem durch einen Benutzer gemeldet zu korrigieren.

ich, was zweite sagte Samuels. Der effizienteste Weg ist, es zu Datenbank zu verlassen. Alle anderen Optionen mehr Zeit und Ressourcen sind aufwändig ....

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top