C# Entity Framework / Verteilung von Programmen mit EF 6.0 / Code First ?

User7634

Cadet 4th Year
Registriert
Aug. 2012
Beiträge
109
Hallo,
ich habe eine grundsätzliche Frage zur Arbeit mit Entity Framework, die ich bislang in keinem Tutorial o.ä. behandelt gesehen habe:

Ich verstehe die unterschiedlichen Ansätze Database-First, Model-First und Code-First. Wenn ich Code-First programmiere, wird üblicherweise die Datenbank jedes Mal neu erstellt, wenn ich das Programm starte. Das kann ich dahin abändern, dass die Neuerstellung der DB nur erfolgt, wenn der Code der Klasse geändert worden ist (modified entity).

Der Ansatz erschließt sich mir trotzdem nicht: wenn ich die Software verteile, soll ja nur einmalig eine Datenbank erstellt werden (SQL-Server). Und das wohl auch nicht von dem User, der die Software startet, sondern eher vom DB-Admin, oder ? Inwiefern ist der Code-First approach noch von Nutzen, wenn die Software fertig ist und verteilt wird ? Oder funktioniert das beim Verteilen der Software ganz anders ?

Ich fürchte, ich unterliege hier einem grundlegenden Missverständnis und weiß, dass es hier viele kluge Köpfe gibt, die sich mehr mit der Materie befasst haben.

Danke für jeden weiterführenden Gedanken
Gruß
user7634
 
Dein Fehler ist die Annahme, dass du immer eine neue Datenbank erzeugen musst. Es kann sehr wohl eine bereits vorhandene verwendet werden. Je nach Komplexität muss man eben eine Möglichkeit implementieren, über die Zeit die Datenbank von Version x auf y upzudaten. Dieses Update würde natürlich nur einmal stattfinden. Warum sollte da der Admin eingreifen?

Es gibt aber durchaus Gründe, warum es so nicht geht. Manche Firmen sind sehr restriktiv, da muss der Admin das jewelige Update manuell prüfen und dann einspielen. In solchen Fällen hast du ein Problem und müsstest z.B. der IT-Abteilung eine händische Liste mit Änderungen geben, die dann von den Admins eingespielt werden.
 
Code First sagt nur, dass die DB Schemata über Code erstellt wird. Das muss aber nicht heißen, dass jedes mal eine Datenbank erstellt wird. existiert die angegeben DB (von den Connections her), dann wird diese DB auch angewandt und nicht irgendwie überschrieben.
Der User hat normalerweise eh keine Berechtigung für die Software. Wenn man will, kann man die Software aufspalten in viele verschiedene Teile, wie WebService fürs Backend und UI fürs Frontend. Was Backend macht und welche DB connections hinterlegt sind, kann der UI Nutzer nicht herauslesen.

Code First Ansatz ist sehr nützlich, wenn ein Schema abstrahierbar ist (viele Tabellen haben ähnlichen Aufbau). DB-First kann man Schema aber nicht mehr so wie ein Entwickler will beeinflussen.
 
Vielen Dank für die beiden Antworten. Sehe jetzt schon etwas klarer.
VG user7634
 
Zurück
Oben