MVC3 und EF Data zuerst: Was sind die besten Praktiken?

9

Es scheint, dass der Fokus bei MVC3 und EF4.1 hauptsächlich auf "code first" liegt - ich kann keine Beispiele oder Tutorials finden, die die folgenden Kriterien erfüllen:

  • verwendet eine vorhandene SQLServer-Datenbank
  • hat separate Projekte für Web & amp; Datenzugriff (wir haben mehrere Web-Apps, die dieselben Datenzugriffsklassen verwenden)
  • Empfehlungen zur Validierung

Existiert ein solches Beispiel oder Tutorial? Gibt es dokumentierte "Best Practices", um dies zu erreichen, oder Gründe dafür, dass keine Lösung auf diese Weise strukturiert ist?

    
chris 05.07.2011, 15:31
quelle

1 Antwort

5

Es ist ein ziemlich häufiges Szenario und es hängt davon ab, ob Sie die EDMX-Datei für das Mapping verwenden wollen oder ob das Mapping im Code definiert werden soll (wie Code zuerst).

Beide Szenarien können als Datenbank zuerst ausgeführt werden

  • Sie erstellen EDMX aus einer vorhandenen Datenbank mit integrierten EF-Tools in Visual Studio und verwenden die DbContext T4-Generatorvorlage, um POCO-Klassen und DbContext-abgeleitete Klassen
  • zu erhalten
  • Sie laden EF Power Tools CTP herunter und Sie werden seine Reverse-Engineering-Funktion verwenden, um Code-Mapping, POCO-Klassen und Kontext für Sie zu generieren

Bei keinem dieser Ansätze werden Datenanmerkungen hinzugefügt. Datenannotationen für Entitäten sollten nicht für die Clientvalidierung verwendet werden (dies ist eine schlechte Vorgehensweise), es sei denn, Sie führen sehr einfache Anwendungen aus. In der Regel haben Ihre Ansichten einige erweiterte Erwartungen und die Validierung in Sicht kann sich von der Entität unterscheiden. Zum Beispiel können die Ansichten zum Einfügen und Aktualisieren verschiedene Validierungen erfordern und es ist nicht möglich, sie mit einem einzelnen Satz von Datenannotationen für das Objekt auszuführen. Aus diesem Grund sollten Sie Datenanmerkungen für die Validierung in spezialisierte Ansichtsmodelle verschieben und Ihre Entitäten in Modelle umwandeln und umgekehrt (Sie können AutoMapper verwenden) um dies zu vereinfachen).

Jedenfalls ist es möglich Datenanmerkungen hinzuzufügen generierte Klassen über Buddy-Klassen, aber wie bereits erwähnt, ist es keine gute Übung.

    
Ladislav Mrnka 05.07.2011 16:07
quelle