Ich beginne gerade ein extrem großes Webprojekt und versuche wirklich alles richtig zu machen.Warum sollte ich Entity Framework Code zuerst verwenden, wenn es nicht sicher in der Produktion verwendet werden kann und Dinge wie Indizes nicht beschrieben werden können
Meine Tools so weit
- ASP.NET MVC 3
- Entity Framework 4.3
- Ninject 3
alles gut geht, aber ich bin der Suche nach ein paar Dinge mit Entity Framework CodeFirst ein bisschen skizzenhaft.
Zum Beispiel musste ich http://codefirstmembership.codeplex.com/ verwenden, um Mitgliedschaftsinformationen als Teil des ersten Setups des Codes einzurichten. Das fühlt sich ein bisschen schwierig an, etwas Drittes davon zu benutzen. Natürlich sollte ich 1337 genug sein, um "meine eigenen zu rollen", aber ich möchte nicht von Anfang an zubeißen. Laufen aspnet_regsql fühlt sich schrecklich an und wird mit jedem db-Update verloren gehen. Wie auch immer, alles funktioniert mit der obigen Bibliothek und es ist nicht so schlimm. Gerüst scheint jedoch gebrochen zu haben.
Jetzt darüber hinaus scheint es, dass dieses Zeug probsam wird, wenn ich in der Live-Umgebung laufe. Alle Schemaänderungen, die ich zwischen der Dev-Datenbank und der Live-Datenbank vornehmen möchte, müssen sowieso manuell mit Skripten verwaltet werden. An diesem Punkt verliere ich nicht zuerst den Code-Punkt?
Ich habe das letzte Jahr mit der Google App Engine gearbeitet und hatte gehofft, dass Code zuerst im Wesentlichen genauso funktioniert? Dh, Änderungen vornehmen und sie verändern die Live-Daten. Jetzt gehe ich davon aus, dass es in der Produktion nichts schadet, weil es in der App-Engine kein ernsthaftes Refactoring gemacht hat. Sie können also nie eine Tabelle mit AppEngine umbenennen. Es würde immer eine neue Tabelle erstellen und die alte verlassen. Sie müssten Daten manuell portieren.
So denke ich jetzt. Warum gehst du nicht einfach zuerst zur Datenbank? Ich arbeite seit 3 Jahren mit linq2sql und bin sehr zufrieden damit, zuerst db zu spielen. Obwohl TBH meine DB Source Control Stratergy ist ein wenig .... fehlt. Ich hatte also gehofft, dass der Code zuerst diese Situation durchsetzen würde, um mich zu verbessern, aber ich fühle mich, dass ich zuerst in die DB gehen sollte, und streng darauf achten, sie unter Kontrolle zu halten.
Ich würde wirklich alle Gedanken über diese Art von Situation schätzen, und auch, wie ist das mit der Verwendung von Nhibinate zu vergleichen?
Wenn Sie nicht an eine bestimmte DB gebunden sind, möchten Sie vielleicht etwas wie RavenDB betrachten. –
Ich bin nicht wirklich abgeneigt, MSSQL zu verwenden, wir sollten in der Lage sein, Teile davon zu migrieren, also können wir einfach mit der Standard Edition skalieren, die EC2 mit einer relativ ordentlichen Rate unterstützt. Wahrscheinlich würde er vor Raven nach Mongo oder Couch schauen, irgendeinen Grund, zuerst nach Raven zu gehen? –
Eine Sache zu prüfen ist, was Sie zuerst außerhalb des Codes wollen. Wollen Sie wirklich Ihre Tabellen im Code definieren und damit die Datenbank erstellen, oder ist es der POCO-Aspekt von EF 4.3? Der Grund, warum ich frage, ist, dass Sie POCOs und DbContext mit Database First oder Model First verwenden können (Sie können ein benutzerdefiniertes T4 erstellen, um die POCOs aus Ihrem Modell zu generieren). Der Grund, warum ich frage ist, weil ich manchmal Leute sehe, die über "Code zuerst" schreiben, wenn die Sache, dass sie wirklich nach der Arbeit mit POCO/DbContext sind. – JMarsch