2

Ich lerne über EF-Code zuerst. Ich habe Database Initialization Strategies in Code-First und Understanding Database Initializers in Entity Framework Code First Artikel gelesen.Datenbankinitialisierung in Entity Framework Code Zuerst

Aber ich bin immer noch verwirrt, wo sollten die Daten vor der Initialisierung sein? Diese Artikel erwähnen das nicht und ich denke, es ist ziemlich wichtig.

Ich baue eine Fußballanwendung, also möchte ich beim Initialisieren der App jeden Team- und Spielernamen in die Datenbank einfügen (jeder in Europa aus den besten Ligen - also ziemlich viele Daten). Sie werden sich nicht ändern. Sollten sie im Quellcode fest codiert sein? oder in XML angehängt? einfache Datei?

Im Moment habe ich: vor der Ausführung, da die Initialisierung prompt (Bitte warten Sie, Initialisierung ...), die ich lesen Sie die Datei, Zeile für Zeile sie in die Datenbank eingefügt wird. Ist es ein guter Weg?

Antwort

2

Es hängt davon ab, wo Sie im Entwicklungsprozess sind. Sie können eine Seed() method auf dem Initialisierer verwenden, die ausgeführt wird, wenn die Datenbank erstellt wird. Also, wenn Sie eine Menge Daten und werden häufig Ihre Modelle mit einer DropCreate_____ Art von initializer Wechsel - Ich würde empfehlen, nur eine kleine Menge von Daten Impfen zu testen mit.

Wenn Sie mit Ihrem ersten Entwurf zufrieden sind, können Sie eine vollständige Seed() tun und Datenbankmigrationen schalten Sie Ihren Modelländerungen zu handhaben. Dadurch werden Ihre vorhandenen Daten beibehalten und es wird eine eigene Seed() -Methode für neue Daten verwendet.

Da, wo die Daten zu erhalten, können Sie sich in etwa so aussehen, wo Sie von einem Webdienst oder downloaden in csv holen könnten, XML, etc. http://www.jokecamp.com/blog/guide-to-football-and-soccer-data-and-apis/#footballdata oder hier http://openfootball.github.io/

+0

was Vorteil der Verwendung von Datenbankinitialisierung ist Ich benutze DropCreateDatabaseIfModelChanges und was, wenn ich stattdessen CreateDatabaseIfNotExists verwende? – AminM

+1

Dies ist sinnvoll, wenn Sie zahlreiche Schemaänderungen vornehmen und nicht in der Nähe der Bereitstellung sind. Keine Migrationen notwendig, wenn sich die Dinge in einem Design-Modus befinden. –