Code First ist nicht für Großanwendungen geeignet. Der Turnaround bei der Entwicklung großer Apps ist sehr groß.
Typischerweise ist der Lebenszyklus Ihrer Business-App wie folgt:
- Version 1 ist in Produktion
- Version 2 ist in der Beta
- Version 3 befindet sich in aktiver Entwicklung
- Version 4 ist in Planung.
Darüber hinaus gibt es andere anwendungsübergreifende Kommunikationsbrücken, geplante Aufgaben, die Integration von Drittanbietern sowie Webservices für verschiedene Kommunikationsgeräte wie Mobiltelefone usw.
Schließlich verwendet Code First den ObjectContext von Entity Model, und ältere EF, die EDMX generierten und ObjectContext mit EntityObject verwendeten, waren für alles ausreichend. Sie können die Textvorlage leicht anpassen, um Code zu generieren. Die Methode zum Erkennen von Änderungen ist bei der Implementierung von ObjectContext langsamer, aber anstatt einen Proxy zu generieren, hätte das EF-Team die Geschwindigkeit zum Erkennen von Änderungen leicht verbessern können, anstatt den Code zuerst neu zu erfinden.
Automatisierte Migration
Automatisierte Migration hört sich theoretisch gut an, aber in der Praxis unmöglich, wenn Sie erst einmal live gehen. Es ist nur gut für das Prototyping und die Entwicklung einiger schneller Demos.
Code First Migration ist in einem solchen System überhaupt nicht geeignet. Version 1 und Version 2 sprechen höchstwahrscheinlich mit derselben Datenbank. Bei Version 3 und Version 4 handelt es sich normalerweise um eine Staging-Version mit einer anderen Datenbank.
Datenbank zuerst
Database First ist ein praktischer Ansatz. Es ist einfach, SQL-Skripte zu vergleichen, zu visualisieren und zu warten. DBAs können problemlos damit arbeiten.
Textvorlagen
Wir haben unsere eigenen Textvorlagen zum Abfragen und Erstellen von EDMX und ObjectContext mit wenig benutzerdefinierter Implementierung erstellt, die Leistungsprobleme behebt. Es gibt mehrere Anwendungen mit mehreren Versionen, die problemlos mit derselben Datenbank kommunizieren.
Für mich ist das Klicken mit der rechten Maustaste auf die .tt-Datei und das Klicken auf "Benutzerdefiniertes Tool ausführen" der mit Abstand schnellste und einfachste Schritt, als Klassen zu schreiben, das Modell zu konfigurieren und zu erstellen.