Ich mache mich bereit, ein neues Projekt zu starten, und ich habe das Entity Framework untersucht. Meine Frage ist, was ist die beste Strategie für die Validierung der Entitäten? Andere Projekte, an denen ich gearbeitet habe, haben Attribute für den Großteil der Validierung verwendet, aber offensichtlich ist dies im Entitätsrahmen nicht möglich. Ist dies der einzige Weg, die partiellen Methoden in den Property Settern zu behandeln? Alle Ratschläge werden sehr geschätzt.Entität Framework Validierung
Antwort
Ich habe das Entity-Framework zuvor noch nicht verwendet, aber eine schnelle Suche zeigt an, dass Sie mehrere Optionen haben.
1) Validate an einer anderen Schicht in der Anwendung
immer eine Option, ich dachte, ich würde es ausdrücklich es wegzuwerfen.
2) Haken in die OnChanged Ereignisse des Entity dann Validierung
wahrscheinlich spröde führen und wäre verwirrend/langsam nach werden, wenn Sie viele verschiedene Eigenschaften Dinge, die für jede Entität ändern können.
3) Implementieren Teil Methoden Eigenschaft zu validieren ändern
Nach this Post und this Durchlauf gibt es verfügbare Teilverfahren zur Validierung. Dies scheint Ihre beste Option zu sein, da es nicht sehr aufdringlich ist und Sie die gewünschte Validierung selektiv implementieren können.
Ich hoffe, dass hilft. Viel Glück.
Wenn Sie ASP.NET MVC verwenden, können Sie den Validation Application Block oder System.ComponentModel.DataAnnotations verwenden. Die Artikel Using Data Annotations und Using Application Block zeigen, wie man sie mit Linq macht, aber die Verwendung mit Entity-Framework sollte ähnlich sein.
Links scheinen veraltet zu sein? –
Links repariert, Post bearbeitet - es ist nur in MVC anwendbar. Danke Jeff – Shimmy
In .NET 4 wird die Unterstützung für die Validierung in Entity-Framework sofort verfügbar sein.
Check out: http://blogs.msdn.com/adonet/archive/2010/01/13/introducing-the-portable-extensible-metadata.aspx
So arbeiten nicht zu hart zu komplex Validierungslogik Implementierung ...
Seltsamerweise sind die PEM-Erweiterung und ihre Beispiele aus irgendeinem Grund nicht mehr über MSDN verfügbar. Ich würde einen aktualisierten Link lieben, wenn jemand einen hat! – ladenedge
Ich hoffe, dass sie uns nicht zum Narren halten ... Ich denke, ich habe mich geirrt, als ich "Out-the-Box" gesagt habe, jetzt merke ich, dass es nur ein Addon ist. Es heißt, dass das Addon kann von http://visualstudiogallery.msdn.microsoft.com/en-us/e6467914-d48d-4075-8885-ce5a0dcb744d heruntergeladen werden, aber überprüfen Sie den Link, um zu sehen, dass es kaputt ist. – Shimmy
Ich fand diesen Link in den Kommentaren http://code.msdn.microsoft.com/DesignerExtStartKit/Wiki/View.aspx?title=Home&version=3, hatte noch keine Zeit zur Kasse. – Shimmy
This Artikel beschreibt, wie Validation Application Block mit Entity Framework integrieren. Es könnte eine Hilfe sein.
Wenn Sie WPF oder Windows Forms verwenden, implementieren Sie möglicherweise die Schnittstelle IDataErrorInfo.
Die Booklibrary Beispielanwendung des WPF Application Framework (WAF) Projekt zeigt, wie durch die Entity Framework erstellt Einheiten validiert werden können.
Wir haben den Objektkontext und abfangen die Savechanges() -Methode
public abstract class ValidationObjectContext : ObjectContext{
...
public override int SaveChanges(SaveOptions options){
ValidateEntities();
return base.SaveChanges(options);
}
}
diese Weise die Validierung bis zur letzten Minute bleibt overrident bevor die Verbindungen hergestellt werden, aber nachdem Sie (erwartet) mit glücklich zu sein das Diagramm und bereit zum Festschreiben (im Gegensatz zu anderen Optionen für die Validierung bei jeder Änderung, da einige komplexe Regeln wie die, die wir haben, nur gültig sind, nachdem mehrere Eigenschaften festgelegt wurden.).Wir haben zwei Validierungsebenen, die Validierung von Basic-Property, Dinge wie String-Länge, NULL-Werte usw. Und Business-Logik-Validierung, die Regeln über mehrere Objekte überprüfen müssen, möglicherweise die Datenbank zu bestätigen.
Erwägen Sie die Implementierung von IValidatableObject in Ihren Entitäten.
- 1. Entität Framework Validierung und Verwendung
- 2. Entität persist Register Validierung Listener
- 3. Benutzerdefinierte erweiterte Entität Validierung mit dynamischen Daten
- 4. Zend Framework Sitemap Validierung
- 5. Entität Framework komplexer Typ vs Erstellen neuer Entität
- 6. Speichern einer expliziten Entität über Entity Framework
- 7. Entity Framework - Entität mit untergeordneten Eigenschaften aktualisieren
- 8. MSSQL/Entität Framework OrderBy, wenn existiert?
- 9. Update getrenntes Objekt in Entität Framework
- 10. FunctionImport in Entität Framework 4 Problem
- 11. Gespeicherte Entität in Entity Framework 6 speichern
- 12. Erweitern automatisch generierten Klassen von Entität Framework
- 13. Entity Framework aktualisiert keine vorhandene verbundene Entität
- 14. Löschen einer Entität in Entity Framework
- 15. Erforderliche Eigenschaften für optionale komplexe Entität Framework-Typen
- 16. Validierung in Symfony2: Entität vs FormType - Best Practices?
- 17. eindeutige Entität Validierung für hinzufügen und Bearbeiten von Formularen
- 18. Validierung mit Entität für einen FormType in einem Formular
- 19. Validierung in Entity Framework verhindern 4
- 20. Validierung auf query_params in Django Rest Framework
- 21. play framework 2 Constraints clientseitige Validierung
- 22. Fehler beim Filtern einer Eigenschaft einer Entität, die in Entity Framework von einer anderen Entität erbt
- 23. Löschen einer Entität ohne es Abrufen erste (Entity Framework 4)
- 24. ASP.Net Entität Framework .tt Dateien nicht unter .edmx
- 25. Anonyme Art Ergebnis von SQL-Abfrage Ausführung Entität Framework
- 26. Entity Framework-Entität, die keine Eigenschaften von verbundenen Entitäten zeigt
- 27. Entity Framework Fremdschlüssel null blieb als Entität eingegeben
- 28. Dynamische Anwendung Filter auf Einheit Entität Framework mit Lambda-Ausdruck
- 29. Entity Framework Eager Laden Entität Liste in Entitätsliste
- 30. Entity Framework 7 (Kern) Entität basierend auf zusammengesetztem Schlüssel suchen?
Wie unterscheiden sich # 2 und # 3? Die partiellen Methoden, die es generiert, sind die OnChanged-Ereignisse ... es sei denn, mir fehlt etwas. –
Sie können Recht haben. Es ist lange her, dass ich EF überhaupt angeschaut habe. – smaclell
Ich las # 2 und # 3 als Validierung auf Entitäts- bzw. Eigenschaftsebene. Diese beiden Strategien haben natürlich unterschiedliche Zwecke: Die Validierung auf Entitätsebene testet die Gültigkeit aller Eigenschaften zusammen (z. B. dass sich gegenseitig ausschließende Eigenschaften nicht beide gesetzt sind), wohingegen die Validierung auf Eigenschaftsebene nur den Inhalt einer einzelnen Eigenschaft bei a berücksichtigt Zeit (z. B. dass eine E-Mail-Adresse die richtige Form hat). – ladenedge